NIPPON - Assembler Source 

   0 ;
   1 ;hauptprogramm
   2 ;
   3             jmp KALTSTART
   4             jmp ENEMY
   5             jmp SPRSHADE
   6             jmp MAPLOAD
   7             jmp CITYLOAD
   8             jmp SAVEGAME
   9             jmp ATTCKEND
  10             jmp ASLEEP
  11             jmp DISPLAY
  12             jmp LEAVESHIP
  13             jmp CALCABI
  14             jmp GAMEEND
  15             jmp COMPMOVE
  16             jmp KOLLISION
  17             jmp SPRONSCR
  18             jmp PLRHIT
  19             jmp PLSPRANI
  20             jmp PLRONSCR
  21 ;
  22 ;
  23 KALTSTART   jsr MAINSET
  24             jsr IRQINIT
  25             jsr INIT
  26             jsr DISPLAY
  27 ;
  28 WARMSTART   ldx #255
  29             txs
  30             inx
  31             stx CIA2+14
  32             stx CIA2+15
  33             stx ATTACKFLG
  34             inx
  35             stx INITFLG
  36 ;
  37 MAINMENU    lda MANMENTXT
  38             ldy MANMENTXT+1
  39             sta NMENUHPTR
  40             sty NMENUHPTR+1
  41             lda #1
  42             jsr MAINMENPR
  43             lda #%10000001
  44             sta NMENUFLG
  45             lda #2
  46             jsr NMENU
  47             cmp #2
  48             bcc MAINMENUA
  49             lda #0
  50             jsr NORMTEXT
  51             lda #15
  52             jsr LTIMER
  53             jmp MAINMENU
  54 ;
  55 MAINMENUA   sta PLANICTR
  56             cmp #1
  57             bne MAINMENUB
  58             lda #20
  59             jsr NORMTEXT
  60             lda #1
  61             jsr NORMTEXT
  62             jsr WAITSTICK
  63             bne MAINMENU
  64 MAINMENUB   lda #3
  65             jsr DISKWAIT
  66             bcs MAINMENU
  67             lda PLANICTR
  68             cmp #1
  69             bne OLDGAME
  70 ;
  71 ;
  72 NEWGAME     lda #0
  73             tax
  74 NEWGAMEA    sta CHDT,X
  75             inx
  76             bne NEWGAMEA
  77             lda #50
  78             jsr EINLEIT
  79             jsr ZSDEL
  80 NEWGAMEIN   jsr NCHARLOAD
  81             jsr CHARSAVE
  82             jmp OLDGAMEA
  83 ;
  84 OLDGAME     jsr CHARLOAD
  85             lda MAPFLG
  86             bmi NEWGAME
  87             beq OLDGAMEA
  88             jsr ZSLOAD
  89             jsr ZSDEL
  90             jsr ZSDATCOPY
  91 OLDGAMEA    jsr PLRONSCR
  92             lda MAPFLG
  93             bne OLDGAMEC
  94 ;
  95 OLDGAMEB    jsr MAPLOAD
  96             bcs OLDGAMEB
  97             lda #7
  98             jsr NORMTEXT
  99             lda #3
 100             jsr MAINMENPR
 101             jsr PRSTRING
 102             jmp OLDGAMED
 103 ;
 104 OLDGAMEC    ldx CITYNR
 105             jsr CITYLOAD
 106             bcs OLDGAMEC
 107             jsr SETSTATUE
 108             sec
 109             jsr DOORSET
 110 ;
 111 OLDGAMED    lda V1
 112             ora #1
 113             sta V1
 114 ;
 115             inc ENEMYFLG
 116             lda #0
 117             sta INITFLG
 118             jsr NMIINIT
 119             clc
 120             jsr PCLOCKSET
 121             jmp MAIN
 122 ;
 123 MAINMENPR   ldx MANMENTXT
 124             ldy MANMENTXT+1
 125             jmp GETSTRING
 126 ;
 127 ;
 128 MAIN        jsr PLAYER
 129             lda PLKOLLFL
 130             beq MAIN
 131             lda POSCMPCTR
 132             bne MAIN
 133             lda #10
 134             sta POSCMPCTR
 135             ldx #4
 136             jsr PLPOSIT
 137             sec
 138             jsr PLPOSCMP
 139             jmp MAIN
 140 ;
 141 PLAYER      jsr CLOCK
 142             jsr LIGHTCHK
 143             jsr SHIPCHK
 144             jsr PLRHITCHK
 145             lda PLRHITCTR
 146             beq PLAYERE
 147             jmp KOLLISION
 148 PLAYERE     lda SOGFLG
 149             bmi PLAYERA
 150             jsr KOLLISION
 151             jsr COMPMOVE
 152             bcs PLAYERB
 153 ;
 154 PLAYERA     jsr JOYSTICK
 155             bne PLAYERB
 156             lda SCROLLFL
 157             bpl PLAYERB
 158             lda ATTACKFLG
 159             beq PLAYERC
 160 ;
 161             lda #2
 162             sta PLRX128
 163             lda #0
 164             sta PLRY128
 165 PLAYERWT    dec PLRY128
 166             bne PLAYERWTA
 167             dec PLRX128
 168             beq PLAYERC
 169 PLAYERWTA   jsr JOYSTICK
 170             beq PLAYERWT
 171             jmp PLRHIT
 172 ;
 173 PLAYERC     lda SHAPE
 174             cmp #2
 175             beq PLAYERCH
 176             jsr SEARCHEXE
 177             bmi PLAYERCA
 178             beq PLAYERCB
 179             cmp #1
 180             beq PLAYERCC
 181             cmp #2
 182             beq PLAYERCD
 183             cmp #5
 184             beq PLAYERCE
 185             cmp #6
 186             beq PLAYERCF
 187             cmp #7
 188             beq PLAYERCG
 189 PLAYERCA    jmp ICONMAIN
 190 PLAYERCB    jmp CITYLOAD
 191 PLAYERCC    jmp TELFIELD
 192 PLAYERCD    jmp ICONMAIN
 193 PLAYERCE    jmp MAGFIELD
 194 PLAYERCF    jmp ENTERSHIP
 195 PLAYERCG    jmp ENTERSTED
 196 PLAYERCH    jmp LEAVESTED
 197 ;
 198 PLAYERB     lda #128
 199             sec
 200             jsr MAINTIMER
 201             jsr STEEDDIR
 202             jsr MAPMOVE
 203             lda ATTACKFLG
 204             bne PLAYERD
 205             jsr LOADMAP
 206 PLAYERD     clc
 207             jsr MAINTIMER
 208 PLAYERX     dex
 209 ;
 210 ;
 211 MAPMOVE     lda SCROLLFL
 212             bpl MAPMOVE2
 213 ;
 214             rts
 215             bpl MAPMOVEA
 216 MAPMOVEX    dex
 217 ;
 218 MAPMOVEA    stx PLRDIR
 219             jsr PLSPRANI
 220             jsr PLPOSIT
 221 ;
 222             lda MAPFLG
 223             beq MAPMOVEB
 224             jsr EXITCHK
 225             bmi MAPMOVEX
 226             jsr FIXPERS
 227 ;
 228 MAPMOVEB    ldx PLRDIR
 229             lda MAPMOVDAT,X
 230             sta SCROLLPTR
 231             clc
 232             jsr PLPOSCMP
 233             bcs MAPMOVEX
 234 ;
 235 MAPMOVEC    lda CNTRLFLG
 236             bne MAPMOVECA
 237             lda SHAPE
 238             cmp #1
 239             beq MAPMOVECA
 240             lsr
 241             clc
 242             adc #7
 243             jsr SETVOICE1
 244 MAPMOVECA   lda #10
 245             sta POSCMPCTR
 246             lda SHPDAM
 247             and #127
 248             sta SHPDAM
 249             inc SHADECHR
 250             bne MAPMOVED
 251             lda #252
 252             sta SHADECHR
 253 ;
 254 MAPMOVED    lda #7
 255             sta SCROLLFL
 256             lda SCROLLPTR
 257             jsr SETMAPCTR
 258             jsr GETPRPTR
 259             lda SCROLLPTR
 260             cmp MAPMOVDIR
 261             beq MAPMOVE2
 262             sta MAPMOVDIR
 263 ;
 264             ldy ATTACKFLG
 265             bne MAPMOVE2
 266             lda MAPMOVDIR
 267             bpl MAPMOVE2
 268             jsr MAPPRINT
 269             lda #7
 270             sta SCROLLFL
 271 ;
 272 ;
 273 MAPMOVE2    jsr PLSPRANI
 274             lda ATTACKFLG
 275             beq MAPMOVE2A
 276             jmp ATTCKMOVE
 277 ;
 278 MAPMOVE2A   lda SCROLLPTR
 279             bmi MAPMOVE3
 280 ;
 281             tax
 282             jsr SCRPRINT
 283             dec SCROLLFL
 284             bmi MAPMOVE2B
 285             lda PLRDIR
 286             sta SPRSCRFLG
 287             dec SCRBITZ,X
 288             dex
 289 MAPMOVE2B   ldy #7
 290             jsr MAPSWITCH
 291             dex
 292 ;
 293 ;
 294 MAPMOVE3    and #1
 295             tax
 296             lda SCROLLFL
 297             cmp #7
 298             beq MAPMOVE3A
 299             lda SCROLLPTR
 300             jsr SETMAPCTR
 301             jsr SCRPRINT
 302             dec SCROLLFL
 303             lda PLRDIR
 304             sta SPRSCRFLG
 305             inc SCRBITZ,X
 306             bne MAPMOVE3B
 307 ;
 308 MAPMOVE3A   ldy #0
 309             jsr MAPSWITCH
 310             lda SCROLLPTR
 311             jsr SETMAPCTR
 312             jsr GETPRPTR
 313             jsr SCRPRINT
 314             dec SCROLLFL
 315 MAPMOVE3B   lda SCROLLPTR
 316             and #1
 317             jsr SETMAPCTR
 318             dex
 319 ;
 320 MAPMOVDAT   dat 128,00,129,1
 321 ;             OB ,UN,LI ,RE
 322 ;
 323 ;
 324 ATTCKMOVE   lda PLRDIR
 325             asl
 326             tay
 327             lda ATTMOVDTA,Y
 328             sta ATTMOVA+1
 329             lda ATTMOVDTA+1,Y
 330             sta ATTMOVA+2
 331 ATTMOVA     jsr ATTMOV1
 332             jsr SCRPRINT
 333             dec SCROLLFL
 334             bpl ATTMOVX
 335             lda #1
 336             sta MONSCRFLG
 337             ldy #7
 338             jsr MAPSWITCH
 339 ATTMOVX     dex
 340 ;
 341 ATTMOVDTA   dat ATTMOV1,ATTMOV2,ATTMOV3,ATTMOV4
 342 ;
 343 ;
 344 ATTMOV1     dec V1+4
 345             dex
 346 ;
 347 ATTMOV2     inc V1+4
 348             dex
 349 ;
 350 ATTMOV3     dec V1+3
 351             lda V1+3
 352             cmp #255
 353             bne ATTMOV3X
 354             sei
 355             lda V1+1
 356             and #254
 357             sta V1+1
 358             cli
 359 ATTMOV3X    dex
 360 ;
 361 ATTMOV4     inc V1+3
 362             bne ATTMOV3X
 363             sei
 364             lda V1+1
 365             ora #1
 366             sta V1+1
 367             cli
 368             dex
 369 ;
 370 ;
 371 ATTCKEND    lda #1
 372             sta CNTRLFLG
 373             lda PLKOLLFL
 374             pha
 375             lda #0
 376             sta PLKOLLFL
 377             sta ATTACKFLG
 378             sta SMTYP
 379             lda #255
 380             sta MAPMOVDIR
 381 ATTCKENDA   ldx #1
 382             lda ATTACKZEI
 383             cmp #6
 384             beq ATTCKENDB
 385             bcc ATTENDEXE
 386 ATTCKENDC   inx
 387             jmp ATTENDEXE
 388 ;
 389 ATTCKENDB   ldx #3
 390             lda ATTACKSPA
 391             cmp #18
 392             beq ATTCKENDX
 393             bcc ATTENDEXE
 394             bcs ATTCKENDC
 395 ;
 396 ATTCKENDX   lda #0
 397             sta CNTRLFLG
 398             pla
 399             sta PLKOLLFL
 400             dex
 401 ;
 402 ATTENDEXE   jsr PLAYERB
 403             lda SCROLLFL
 404             bpl ATTENDEXE
 405             lda PLRDIR
 406             eor #1
 407             sta PLRDIR
 408             jsr SMAPCTRIN
 409             jmp ATTCKENDA
 410 ;
 411 ;
 412 COMPMOVE    lda CMPMOVFLG
 413             bne COMPMOVEB
 414             lda SCROLLFL
 415             bpl COMPMOVEB
 416             jsr JOYSTICK
 417             rts
 418             bmi COMPMOVEA
 419             lda RANDOM
 420             bmi COMPMOVEZ
 421 ;
 422 COMPMOVEA   ldx SOGFLG
 423             inx
 424             dec SOGCTR
 425             bne COMPMOVEB
 426             lda #255
 427             sta SOGFLG
 428             sta SOGCTR
 429 COMPMOVEB   sec
 430             dex
 431 ;
 432 COMPMOVEZ   lda #255
 433             sta SOGFLG
 434             sta SOGCTR
 435             clc
 436             dex
 437 ;
 438 ;
 439 PLRHIT      ldx #255
 440             stx SMFIXPERS+4
 441             inx
 442             stx MIRRORFLG
 443             lda #%11101111
 444             and V1
 445             sta V1
 446             lda SHAPE
 447             bne PLRHITB
 448             ldx MOMWEAPON
 449             dat $2C
 450 PLRHITB     ldx #17
 451             stx SMWEAPON
 452             lda #25
 453             sta PLRHITCTR
 454             lda MAPCX128
 455             clc
 456             adc ATTACKSPA
 457             lsr
 458             and #63
 459             sta SMXPOS
 460             lda MAPCY128
 461             clc
 462             adc ATTACKZEI
 463             lsr
 464             and #63
 465             sta SMYPOS
 466             ldy PLRDIR
 467             ldx #0
 468             jsr WEAPONON
 469             php
 470             ldx SMWEAPON
 471             lda SHOTSND,X
 472             jsr SETVOICE1
 473             plp
 474 PLRHITX     dex
 475 ;
 476 ;
 477 PLRHITCHK   bit SMFIXPERS+4
 478             bmi PLRHITCHD
 479             bvs PLRHITCHD
 480             lda #3
 481             sta AKTSPRITE
 482 PLRHITCHA   ldx AKTSPRITE
 483             lda SMTYP,X
 484             bmi PLRHITCHB
 485             lda #4
 486             jsr SPRBITPOS
 487             txa
 488             bne PLRHITCHB
 489             tya
 490             beq PLRHITCHC
 491 PLRHITCHB   dec AKTSPRITE
 492             bne PLRHITCHA
 493             beq PLRHITCHD
 494 ;
 495 PLRHITCHC   ldy AKTSPRITE
 496             lda SMFIXPERS+4
 497             ora #64
 498             sta SMFIXPERS+4
 499             ldx #0
 500             jsr GETHIT
 501             lda SMCOL+4
 502             bmi PLRHITCHE
 503 ;
 504 PLRHITCHD   lda PLRHITCTR
 505             beq PLRHITCHX
 506             lda #128
 507             sec
 508             jsr MAINTIMER
 509             clc
 510             jsr MAINTIMER
 511             dec PLRHITCTR
 512             bne PLRHITCHX
 513             lda SMCOL+4
 514             bmi PLRHITCHX
 515 PLRHITCHE   ldx #4
 516             jsr SPRITEOFF
 517 PLRHITCHX   dex
 518 ;
 519 ;
 520 PLSPRANI    lda CNTRLFLG
 521             bne PLSPRANIX
 522             lda FREECHR
 523             and #63
 524             cmp #WASSER
 525             bne PLSPRANIA
 526             lda #SWIMSHP
 527             sta V1+27
 528             dex
 529 PLSPRANIA   lda SCROLLFL
 530             bpl PLSPRANIB
 531             txa
 532             asl
 533             clc
 534             adc SHAPENR
 535             sta V1+27
 536             lda #5
 537             sta PLANICTR
 538             dex
 539 ;
 540 PLSPRANIB   dec PLANICTR
 541             bne PLSPRANIX
 542             lda #4
 543             sta PLANICTR
 544             lda V1+27
 545             eor #1
 546             sta V1+27
 547 PLSPRANIX   dex
 548 ;
 549 ;
 550 ENEMY       jsr MOVENEMY
 551             lda ENEMYFLG
 552             beq ENEMYX
 553             jsr MESETJOB
 554             lda ATTACKFLG
 555             bne ENEMYX
 556 ;
 557             dec SETSPRPTR
 558             bne ENEMYB
 559             lda #3
 560             sta SETSPRPTR
 561 ENEMYB      ldx SETSPRPTR
 562             stx MOMSPRITE
 563             lda SMTYP,X
 564             bpl ENEMYX
 565             lda CHARMFLG
 566             bne ENEMYX
 567             jsr SETENEMY
 568 ENEMYX      dex
 569 ;
 570 ;
 571 SETENEMY    dec SMSTPCTR,X
 572             bne SETENEMYX
 573             dec SMBITCTR,X
 574             bne SETENEMYX
 575             lda SCROLLFL
 576             bpl SETENEMYC
 577 ;
 578             lda FIXENEMY
 579             bpl SETENEMYA
 580 ;
 581             jsr GETETYP
 582 SETENEMYJ   bcs SETENEMYC
 583 ;
 584 ;
 585 SETENEMYA   and #31
 586             sta MOMTYP
 587             tay
 588             lda EMART,Y
 589             sta MOMMART
 590             lda ECOL,Y
 591             sta MOMCOL
 592             ldy LIGHTFLG
 593             bne SETENEMYB
 594             and #64
 595             bne SETENEMYC
 596 ;
 597 SETENEMYB   jsr SETEPOS
 598             bcc SETENEMYD
 599 SETENEMYC   lda #1
 600             sta SMSTPCTR,X
 601             sta SMBITCTR,X
 602 SETENEMYX   dex
 603 ;
 604 SETENEMYD   lda MAPFLG
 605             bne SETENEMYF
 606             lda MOMCOL    ;ANGRIFF
 607             and #%00100000
 608             bne SETENEMYE
 609             lda RANDOM
 610             and #3
 611             bne SETENEMYF
 612 SETENEMYE   lda MOMTYP
 613             ora #64
 614             sta MOMTYP
 615 ;
 616 ;
 617 SETENEMYF   lda MOMTYP
 618             sta SMTYP,X
 619             and #31
 620             tay
 621 ;
 622             lda ECOL,Y
 623             sta SMCOL,X
 624             lda ESPD,Y
 625             sta SMSPD,X
 626             and #7
 627             sta SMSPDCTR,X
 628             lda MOMMART
 629             sta SMART,X
 630             lda EWEAPON,Y
 631             sta SMWEAPON,X
 632             lda EDAM,Y
 633             sta SMDAM,X
 634             lda EAC,Y
 635             sta SMAC,X
 636             lda EHIT,Y
 637             sta SMHIT,X
 638             lda EHPTS,Y
 639             sta SMHPTS,X
 640             lda MOMJOB
 641             sta SMJOBPTR,X
 642 ;
 643             lda ZWEIERPOT,X
 644             pha
 645             ora V1
 646             sta V1
 647             pla
 648             ora V1+2
 649             sta V1+2
 650             lda #4
 651             sta SMSTPCTR,X
 652             dex
 653 ;
 654 ;
 655 SETEPOS     jsr SPRORIGIN
 656             lda RANDOM
 657             and #3
 658             sta MOMJOB
 659             asl
 660             tay
 661             lda SEPOSDAT,Y
 662             sta SETEPOSA+1
 663             lda SEPOSDAT+1,Y
 664             sta SETEPOSA+2
 665 SETEPOSA    jsr SETEPOS1
 666             jsr SEPOSCHK
 667             bcs SETEPOSX
 668             lda MOMYPOS
 669             ldy MOMXPOS
 670             jsr SPRMAPPOS
 671             lda (IZPA),Y
 672             jsr SECHRCHK
 673             bne SETEPOSX
 674 ;
 675 SETEPOSIN   lda MOMXPOS
 676             sta SMXPOS,X
 677             lda MOMYPOS
 678             sta SMYPOS,X
 679             txa
 680             asl
 681             tax
 682             ldy SPRZEILE
 683             lda MAPCY128
 684             lsr
 685             lda #0
 686             bcc SETEPOSB
 687             sbc #8
 688 SETEPOSB    adc SEPOSDTY,Y
 689             sta V1+4,X
 690             ldy SPRSPALTE
 691             lda MAPCX128
 692             lsr
 693             lda #0
 694             bcc SETEPOSC
 695             sbc #8
 696 SETEPOSC    adc SEPOSDTXL,Y
 697             sta V1+3,X
 698             ldx MOMSPRITE
 699             lda SEPOSDTXH,Y
 700             beq SETEPOSD
 701             lda ZWEIERPOT,X
 702             ora V1+1
 703             sta V1+1
 704             clc
 705             dex
 706 ;
 707 SETEPOSD    lda ZWEIERPOT,X
 708             eor #255
 709             and V1+1
 710             sta V1+1
 711             clc
 712             dex
 713 ;
 714 SETEPOSX    ldx MOMSPRITE
 715             sec
 716             dex
 717 ;
 718 ;
 719 SETEPOS1    lda #10
 720             dat $2C
 721 ;
 722 SETEPOS2    lda #0
 723             sta SPRZEILE
 724             asl
 725             clc
 726             adc MOMYPOS
 727             lsr
 728             sta MOMYPOS
 729             txa
 730             pha
 731             ldx #21
 732             ldy #31
 733             jsr RANDOMIZE
 734             sta SPRSPALTE
 735             asl
 736             clc
 737             adc MOMXPOS
 738             lsr
 739             sta MOMXPOS
 740             pla
 741             tax
 742             dex
 743 ;
 744 SETEPOS3    lda #21
 745             dat $2C
 746 ;
 747 SETEPOS4    lda #0
 748             sta SPRSPALTE
 749             asl
 750             clc
 751             adc MOMXPOS
 752             lsr
 753             sta MOMXPOS
 754             txa
 755             pha
 756             ldx #10
 757             ldy #15
 758             jsr RANDOMIZE
 759             sta SPRZEILE
 760             asl
 761             clc
 762             adc MOMYPOS
 763             lsr
 764             sta MOMYPOS
 765             pla
 766             tax
 767             dex
 768 ;
 769 ;
 770 SEPOSDAT    dat SETEPOS1,SETEPOS2,SETEPOS3,SETEPOS4
 771 SEPOSDTY    dat 19,35,51,67,83,99,115,131,147,163,179
 772 SEPOSDTXL   dat 12,28,44,60,76,92,108,124,140,156,172,188,204,220,236,252
 773             dat 268<,284<,300<,316<,332<,348<
 774 SEPOSDTXH   dat @16:0 @6:1
 775 ;
 776 ;
 777 GETETYP     lda MAPFLG
 778             beq SETMENEMY
 779 ;
 780 SETCENEMY   lda FIXENEMY
 781             and #%01100000
 782             bne SETCENA
 783             lda RANDOM
 784             ora #8
 785             clc
 786             dex
 787 SETCENA     cmp #32
 788             bne SETCENB
 789             lda RANDOM
 790             and #$F7
 791             clc
 792             dex
 793 SETCENB     cmp #64
 794             bne SETCENC
 795             lda RANDOM
 796             clc
 797             dex
 798 SETCENC     sec
 799             dex
 800 ;
 801 ;
 802 SETMENEMY   lda RANDOM
 803             and #31
 804             pha
 805             and #15
 806             tay
 807             lda EXPCTR+1
 808             lsr
 809             lsr
 810             sta MOMTYP
 811             clc
 812             lda SETMENDAT,Y
 813             beq SETMENEMX
 814             sec
 815             sbc MOMTYP
 816             cmp RANDOM
 817 SETMENEMX   pla
 818             sta MOMTYP
 819             dex
 820 ;
 821 SETMENDAT   dat 0,0,200,160,100,100,220,230,240,245,245,250,128,100,0,0
 822 ;
 823 ;
 824 SECHRCHK    sta IC
 825             and #63
 826             cmp #62
 827             bcc SECHRCHKA
 828 SECHRCHKE   lda #1
 829             dex
 830 ;
 831 SECHRCHKA   ldy MAPFLG
 832             bne SECHRCHKB
 833             cpx #4
 834             bcs SECHRCHKW ;WAFFE
 835             bit MOMCOL    ;FLIEGEN
 836             bpl SECHRCHKB
 837             lda #0
 838             dex
 839 SECHRCHKB   lda IC
 840             bit MOMMART
 841             bvs SECHRCHKC
 842             dey
 843             bpl SECHRCHKD
 844             and #63
 845             cmp #18
 846             bcc SECHRCHKD
 847             cmp #26
 848             bcc SECHRCHKE
 849 ;
 850 SECHRCHKD   lda IC
 851             and #64
 852             dex
 853 ;
 854 SECHRCHKC   and #63   ;AUF ZEICHEN
 855             sta IC
 856             lda MOMMART
 857             and #63
 858             cmp IC
 859             dex
 860 ;
 861 SECHRCHKW   lda IC
 862             and #64
 863             beq SECHRCHKT
 864             lda IC
 865             and #63
 866             cmp #1
 867             beq SECHRCHKV
 868             cmp #5
 869             beq SECHRCHKV
 870 SECHRCHKU   lda #0
 871             dex
 872 SECHRCHKV   lda MOMCOL
 873             and #32
 874             bne SECHRCHKU
 875             lda #1
 876 SECHRCHKT   dex
 877 ;
 878 ;
 879 SEPOSCHK    lda MAPFLG
 880             bne SEPOSCHKA
 881             ldy #3
 882             lda MOMXPOS
 883             and #63
 884             sta MOMXPOS
 885             lda MOMYPOS
 886             and #63
 887             sta MOMYPOS
 888             cpx #4
 889             bcc SEPOSCHKB
 890 SEPOSCHKZ   clc
 891             dex
 892 ;
 893 SEPOSCHKA   ldy #7
 894             lda MOMXPOS
 895             cmp #64
 896             bcs SEPOSCHKX
 897             lda MOMYPOS
 898             cmp #64
 899             bcc SEPOSCHKB
 900 SEPOSCHKX   sec
 901             dex
 902 ;
 903 SEPOSCHKB   stx ID
 904 SEPOSCHKC   cpy ID
 905             beq SEPOSCHKD
 906             lda SMTYP,Y
 907             bmi SEPOSCHKD
 908             lda SMXPOS,Y
 909             cmp MOMXPOS
 910             bne SEPOSCHKD
 911             lda SMYPOS,Y
 912             cmp MOMYPOS
 913             beq SEPOSCHKX
 914 SEPOSCHKD   dey
 915             bne SEPOSCHKC
 916             clc
 917             dex
 918 ;
 919 ;
 920 SPRORIGIN   lda MAPCY128
 921             and #254
 922             sec
 923             sbc #4
 924             sta MOMYPOS
 925             lda MAPCX128
 926             and #254
 927             sec
 928             sbc #2
 929             sta MOMXPOS
 930             dex
 931 ;
 932 ;---
 933 ;
 934 MOVENEMY    dec SLOWCTR
 935             bne MOVENEMYX
 936             lda SLOWSPEED
 937             sta SLOWCTR
 938             lda #7
 939             sta IA
 940 MOVENEMYA   ldx IA
 941             lda SMTYP,X
 942             bmi MOVENEMYB
 943             and #%00100000
 944             bne MOVENEMYB
 945             lda SMJOBPTR,X
 946             bpl MOVENEMYB
 947             dec SMSPDCTR,X
 948             bne MOVENEMYB
 949             jsr MOVENEMYC
 950 MOVENEMYB   dec IA
 951             bne MOVENEMYA
 952 MOVENEMYX   dex
 953 ;
 954 MOVENEMYC   lda SMSPD,X
 955             and #7
 956             sta SMSPDCTR,X
 957             lda SMJOBPTR,X
 958             and #7
 959             asl
 960             tay
 961             lda MEJOBDAT,Y
 962             sta MOVENEMYE+1
 963             lda MEJOBDAT+1,Y
 964             sta MOVENEMYE+2
 965 MOVENEMYE   jmp MEJOB0
 966 ;
 967 MEJOBDAT    dat MEJOB0,MEJOB1,MEJOB2,MEJOB3,MEJOB4,MEJOB5,MEJOB6
 968 ;
 969 MEJOB0      ldy #0
 970             dat $2C
 971 ;
 972 MEJOB1      ldy #1
 973             dat $2C
 974 ;
 975 MEJOB2      ldy #2
 976             dat $2C
 977 ;
 978 MEJOB3      ldy #3
 979             lda #2
 980             jsr SPRMOVE
 981             bcc MEJOB3A
 982 SPRITEOFF   lda #255
 983             sta SMTYP,X
 984             sta SMFIXPERS,X
 985             jsr SETETIMER
 986             lda ZWEIERPOT,X
 987             eor #255
 988             and V1
 989             sta V1
 990             dex
 991 ;
 992 MEJOB3A     dec SMBITCTR,X
 993             bmi MEJOB4B
 994             lda SMBITCTR,X
 995             lsr
 996             bcs MEJOB3X
 997             lda V1+27,X
 998             eor #1
 999             sta V1+27,X
1000 MEJOB3X     dex
1001 ;
1002 ;
1003 MEJOB4      dec SMBITCTR,X
1004             bne MEJOB4X
1005             lda INFRAFLG
1006             bne MEJOB4A
1007             lda SMCOL,X
1008             sta MOMCOL
1009             sta V1+19,X
1010 MEJOB4A     dec SMSTPCTR,X
1011 MEJOB4B     bmi STOPJOB
1012             lda #20
1013             sta SMBITCTR,X
1014             lda V1+27,X
1015             pha
1016             and #%00000110
1017             lsr
1018             tay
1019             pla
1020             and #%11111000
1021             ora MEJOB4DAT,Y
1022             sta V1+27,X
1023 MEJOB4X     dex
1024 ;
1025 MEJOB4DAT   dat 6,4,0,2
1026 ;
1027 ;
1028 MEJOB5      dec SMBITCTR,X
1029             bmi MEJOB5X
1030             beq MEJOB5A
1031             lda SMFIXPERS+4,X
1032             bmi MEJOB5B
1033             lda SMCOL+4,X
1034             bmi MEJOB5B
1035             lda ZWEIERPOT+4,X
1036             eor #255
1037             and V1
1038             sta V1
1039             lda #255
1040             sta SMFIXPERS+4,X
1041             lda SMSPD,X
1042             lsr
1043             lsr
1044             lsr
1045             lsr
1046             sta SMBITCTR,X
1047 MEJOB5B     lda SMBITCTR,X
1048             and #15
1049             sta SMBITCTR,X
1050 MEJOB5X     dex
1051 MEJOB5A     lda #0
1052             sta SMSTPCTR,X
1053             lda SMCOL+4,X
1054             bmi STOPJOB
1055             txa
1056             pha
1057             clc
1058             adc #4
1059             tax
1060             jsr SPRITEOFF
1061             pla
1062             tax
1063 ;
1064 ;
1065 ;
1066 STOPJOB     lda SMJOBPTR,X
1067             and #127
1068             sta SMJOBPTR,X
1069 MEJOB6      dex
1070 ;
1071 ;---
1072 ;
1073 MESETJOB    lda #7
1074             sta MOMSPRITE
1075 MESETJOBA   ldx MOMSPRITE
1076             lda SMTYP,X
1077             bmi MESETJOBB
1078             lda SMJOBPTR,X
1079             bmi MESETJOBB
1080             jsr MESJEXE
1081 MESETJOBB   dec MOMSPRITE
1082             bne MESETJOBA
1083             dex
1084 ;
1085 ;
1086 MESJEXE     lda SMART,X
1087             sta MOMMART
1088             lda SMXPOS,X
1089             sta MOMXPOS
1090             lda SMYPOS,X
1091             sta MOMYPOS
1092             lda SMTYP,X
1093             sta MOMTYP
1094             lda INFRAFLG
1095             bne MESJEXEA
1096             lda SMCOL,X
1097             sta MOMCOL
1098             sta V1+19,X
1099 ;
1100 MESJEXEA    lda #4
1101             sta JOBDIRCTR
1102 ;
1103             lda SMJOBPTR,X
1104             pha
1105             and #7
1106             sta MOMJOB
1107             pla
1108             and #64   ;WAFFENJOB
1109             bne MESETJOBD
1110 ;
1111             dec SMSTPCTR,X
1112             bpl MESJOBA
1113 ;
1114             bit MOMTYP
1115             bvc MESETJOBI
1116             lda RANDOM
1117             and #3
1118             jmp MESETJOBJ
1119 MESETJOBI   ldx #JOBANZ
1120             ldy #7
1121             jsr RANDOMIZE
1122 MESETJOBJ   sta MOMJOB
1123             ldx MOMSPRITE
1124             lda RANDOM
1125             and #15
1126             adc #1
1127             sta SMSTPCTR,X
1128 ;
1129 MESJOBA     lda MOMMART
1130             bmi MESJOBB
1131             lda #4
1132             sta MOMJOB
1133 MESJOBB     lda MOMJOB
1134             cmp #4
1135             bcs MESETJOBF
1136 ;
1137 MESETJOBC   bit MOMTYP
1138             bvc MESETJOBD
1139             bit HIDEFLG
1140             bmi MESETJOBD
1141             lda JOBDIRCTR
1142             cmp #3
1143             bcc MESETJOBD
1144             jsr SETATTACK
1145             bcc MESETJOBD
1146             sta SMBITCTR,X
1147             lda #5+128
1148             sta SMJOBPTR,X
1149             dex
1150 ;
1151 MESETJOBD   jsr MENEWPOS
1152             jsr SEPOSCHK
1153             bcs MESETJOBE
1154             lda MOMYPOS
1155             ldy MOMXPOS
1156             jsr SPRMAPPOS
1157             lda (IZPA),Y
1158             jsr SECHRCHK
1159             beq MESETJOBG
1160             lda MAPFLG
1161             bne MESETJOBE
1162             cpx #4
1163             bcc MESETJOBE
1164             jmp SPRITEOFF
1165 ;
1166 MESETJOBE   lda SMXPOS,X
1167             sta MOMXPOS
1168             lda SMYPOS,X
1169             sta MOMYPOS
1170             inc MOMJOB
1171             lda MOMJOB
1172             and #3
1173             sta MOMJOB
1174             dec JOBDIRCTR
1175             bne MESETJOBC
1176 ;
1177             lda #4
1178             sta MOMJOB
1179 MESETJOBF   lda #4
1180             sta SMSTPCTR,X
1181 ;
1182 MESETJOBG   lda MAPFLG
1183             bne MESETJOBK
1184             cpx #4
1185             bcs MESETJOBH
1186 MESETJOBK   lda MOMJOB
1187             and #3
1188             asl
1189             sta IA
1190             lda MOMTYP
1191             and #15
1192             asl
1193             asl
1194             asl
1195             clc
1196             adc #64
1197             adc IA
1198             sta V1+27,X
1199 MESETJOBH   lda #7
1200             sta SMBITCTR,X
1201             lda MOMXPOS
1202             sta SMXPOS,X
1203             lda MOMYPOS
1204             sta SMYPOS,X
1205             lda MOMJOB
1206             ora #128
1207             sta SMJOBPTR,X
1208             dex
1209 ;
1210 ;--- IN ZPA
1211 ;
1212 MENEWPOS    lda MOMJOB
1213             and #7
1214             tay
1215             lda MOMXPOS
1216             clc
1217             adc MENPDATA,Y
1218             sta MOMXPOS
1219             lda MOMYPOS
1220             clc
1221             adc MENPDATB,Y
1222             sta MOMYPOS
1223             dex
1224 ;
1225 MENPDATA    dat 0,0,255,1
1226 MENPDATB    dat 255,1,0,0
1227 ;
1228 ;---
1229 ;
1230 SETATTACK   lda JOBDIRCTR
1231             cmp #4
1232             bcc SETATTB
1233             lda FEARFLG
1234             bne SETATTA
1235 ;
1236             lda MIRRORFLG
1237             jsr SPRBITPOS
1238             stx ISATTPOSX
1239             sty ISATTPOSY
1240             ldx MOMSPRITE
1241             lda SMFIXPERS+4,X
1242             bpl SETATTA
1243 ;
1244             jsr ATTACKCHK
1245             bcc SETATTA
1246             dex
1247 SETATTA     lda RANDOM
1248             and #1
1249             sta SETATTFLG
1250 ;
1251 SETATTB     lda SETATTFLG
1252             eor #1
1253             sta SETATTFLG
1254 ;
1255             tay   ;ANNAEHERN
1256             lda ISATTPOSY,Y
1257             bne SETATTC
1258             clc
1259             dex
1260 ;
1261 SETATTC     bmi SETATTD
1262             lda #1
1263             dat $2C
1264 SETATTD     lda #0
1265             sta MOMJOB
1266             tya
1267             asl
1268             ora MOMJOB
1269             eor FEARFLG
1270             sta MOMJOB
1271 SETATTX     clc
1272             dex
1273 ;
1274 ;---
1275 ;
1276 ATTACKCHK   lda #1
1277             sta SHOTJOB
1278             lda ISATTPOSY
1279             bne ATTCKCHKA
1280             lda ISATTPOSX
1281             cmp #255
1282             beq SETHIT
1283             cmp #1
1284             beq SETHIT
1285             jmp SETSHOT
1286 ;
1287 ATTCKCHKA   dec SHOTJOB
1288             lda ISATTPOSX
1289             bne ATTCKCHKX
1290             lda ISATTPOSY
1291             cmp #255
1292             beq SETHIT
1293             cmp #1
1294             beq SETHIT
1295             jmp SETSHOT
1296 ATTCKCHKX   clc
1297             dex
1298 ;
1299 ;---
1300 ;
1301 SETHIT      jsr TURNENEMY
1302             jsr WEAPONON
1303             bcc ATTCKCHKX
1304             lda SMSPD,X
1305             lsr
1306             lsr
1307             lsr
1308             lsr
1309             ora #128
1310 SETHITX     pha
1311             lda SMWEAPON,X
1312             and #31
1313             tay
1314             lda SHOTSND,Y
1315             jsr SETVOICE2
1316             pla
1317             sec
1318             dex
1319 ;
1320 ;---
1321 ;
1322 SETSHOT     lda RANDOM
1323             bmi ATTCKCHKX
1324 SETSHOTA    lda SMWEAPON,X
1325             and #31
1326             cmp #8
1327             beq SETSHOTB
1328             tay
1329             lda SHOTCOL,Y
1330             bpl ATTCKCHKX
1331 ;
1332 SETSHOTB    jsr TURNENEMY
1333             jsr WEAPONON
1334             lda SMSPD,X
1335             lsr
1336             lsr
1337             lsr
1338             lsr
1339             jmp SETHITX
1340 ;
1341 ;---
1342 ;
1343 TURNENEMY   ldy SHOTJOB
1344             asl SHOTJOB
1345             lda ISATTPOSY,Y
1346             bmi TURNENA
1347             inc SHOTJOB
1348 TURNENA     lda SHOTJOB
1349             sta MOMJOB
1350             asl
1351             sta IA
1352             lda V1+27,X
1353             and #%11111000
1354             adc IA
1355             sta V1+27,X
1356             ldy SHOTJOB
1357             dex
1358 ;
1359 ;---
1360 ;
1361 WEAPONON    lda SHOTJOB
1362             pha
1363             lda IA
1364             pha
1365             lda IB
1366             pha
1367             sty SHOTJOB
1368             tya
1369             asl
1370             tay
1371             lda WPONDAT,Y
1372             sta WEAPONONA+1
1373             lda WPONDAT+1,Y
1374             sta WEAPONONA+2
1375             txa
1376             asl
1377             tay
1378 WEAPONONA   jsr WEAPONON0
1379 ;
1380             lda SMWEAPON,X
1381             and #31
1382             tay
1383             sta IA       ;WAFFENTYP
1384             lda SHOTCOL,Y
1385             sta SMCOL+4,X
1386             sta V1+19+4,X
1387             sta IB
1388 ;
1389             lda #0
1390             bit IB
1391             bvc WEAPONONC
1392             lda SHOTJOB
1393             cpy #8    ;SPEER
1394             bne WEAPONONE
1395             and #2
1396             jmp WEAPONONC
1397 WEAPONONE   bit IB
1398             bpl WEAPONONC
1399             asl
1400 WEAPONONC   clc
1401             adc SHOTSHAPE,Y
1402             sta V1+27+4,X
1403             lda #255
1404             sta SMART+4,X
1405             lda #1
1406             sta SMSPD+4,X
1407             sta SMSPDCTR+4,X
1408             lda #127
1409             sta SMSTPCTR+4,X
1410             lda ZWEIERPOT+4,X
1411             ora V1
1412             sta V1
1413             tya
1414             sta SMFIXPERS+4,X
1415             sta SMTYP+4,X
1416             cmp #8        ;SPEER
1417             beq WEAPONOND
1418             bit IB
1419             bmi WEAPONOND
1420             lda #6
1421             sta SHOTJOB
1422 WEAPONOND   lda SHOTJOB
1423             ora #64
1424             sta SMJOBPTR+4,X
1425             pla
1426             sta IB
1427             pla
1428             sta IA
1429             pla
1430             sta SHOTJOB
1431             sec
1432             dex
1433 ;
1434 ;
1435 WPONDAT     dat WEAPONON0,WEAPONON1,WEAPONON2,WEAPONON3
1436 ;
1437 WEAPONON0   lda V1+3,Y
1438             sta V1+11,Y
1439             lda V1+4,Y
1440             sec
1441             sbc #16
1442             sta V1+12,Y
1443             lda SMXPOS,X
1444             sta SMXPOS+4,X
1445             lda SMYPOS,X
1446             sec
1447             sbc #1
1448             and #63
1449             sta SMYPOS+4,X
1450             jmp WEAPONON5
1451 ;
1452 ;
1453 WEAPONON1   lda V1+3,Y
1454             sta V1+11,Y
1455             lda V1+4,Y
1456             clc
1457             adc #16
1458             sta V1+12,Y
1459             lda SMXPOS,X
1460             sta SMXPOS+4,X
1461             lda SMYPOS,X
1462             clc
1463             adc #1
1464             and #63
1465             sta SMYPOS+4,X
1466             jmp WEAPONON5
1467 ;
1468 ;
1469 WEAPONON2   lda V1+4,Y
1470             sta V1+12,Y
1471             jsr WEAPONON5
1472 ;
1473             lda V1+3,Y
1474             sec
1475             sbc #16
1476             sta V1+11,Y
1477             bcs WEAPNON2B
1478             lda IA
1479             bne WEAPNON2A
1480             lda #0
1481             sta V1+11,Y
1482             beq WEAPNON2B
1483 WEAPNON2A   lda ZWEIERPOT+4,X
1484             eor #255
1485             and V1+1
1486             sta V1+1
1487 ;
1488 WEAPNON2B   lda SMYPOS,X
1489             sta SMYPOS+4,X
1490             lda SMXPOS,X
1491             sec
1492             sbc #1
1493             and #63
1494             sta SMXPOS+4,X
1495             dex
1496 ;
1497 ;
1498 WEAPONON3   lda V1+4,Y
1499             sta V1+12,Y
1500             jsr WEAPONON5
1501 ;
1502             lda V1+3,Y
1503             clc
1504             adc #16
1505             sta V1+11,Y
1506             bcc WEAPNON3B
1507             lda IA
1508             beq WEAPNON3A
1509             lda #255
1510             sta V1+11,Y
1511             bne WEAPNON3B
1512 WEAPNON3A   lda ZWEIERPOT+4,X
1513             ora V1+1
1514             sta V1+1
1515 ;
1516 WEAPNON3B   lda SMYPOS,X
1517             sta SMYPOS+4,X
1518             lda SMXPOS,X
1519             clc
1520             adc #1
1521             and #63
1522             sta SMXPOS+4,X
1523             dex
1524 ;
1525 ;
1526 WEAPONON5   lda ZWEIERPOT+4,X
1527             eor #255
1528             and V1+1
1529             sta V1+1
1530             lda ZWEIERPOT,X
1531             and V1+1
1532             asl
1533             asl
1534             asl
1535             asl
1536             sta IA
1537             ora V1+1
1538             sta V1+1
1539             dex
1540 ;
1541 ;---
1542 ;
1543 SPRSHADE    lda INFRAFLG
1544             beq SPRSHADEE
1545             lda #0
1546             sta V1+2
1547             dex
1548 SPRSHADEE   lda #7
1549             sta IA
1550 SPRSHADEC   inc SPRSHDCTR
1551             ldx SPRSHDCTR
1552             cpx #8
1553             bcc SPRSHADEB
1554             ldx #1
1555             stx SPRSHDCTR
1556 SPRSHADEB   lda SMTYP,X
1557             bpl SPRSHADED
1558             dec IA
1559             bne SPRSHADEC
1560 SPRSHADEX   dex
1561 ;
1562 SPRSHADED   lda SMCOL,X
1563             and #16
1564             bne SPRSHADE1
1565             jsr SPRSCRPOS
1566             lda IB
1567             cmp #166
1568             bcs SPRSHADEX
1569             lda ZWEIERPOT,X
1570             and V1+1
1571             beq SPRSHADEA
1572             lda IA
1573             cmp #87
1574             bcs SPRSHADEX
1575 SPRSHADEA   ldy #0
1576             lda #251
1577             cmp (IZPA),Y
1578             bcc SPRSHADE1
1579             iny
1580             cmp (IZPA),Y
1581             bcc SPRSHADE1
1582             ldy #40
1583             cmp (IZPA),Y
1584             bcc SPRSHADE1
1585             iny
1586             cmp (IZPA),Y
1587             bcc SPRSHADE1
1588             lda ZWEIERPOT,X
1589             eor #255
1590             and V1+2
1591             sta V1+2
1592             dex
1593 ;
1594 SPRSHADE1   lda ZWEIERPOT,X
1595             ora V1+2
1596             sta V1+2
1597             dex
1598 ;
1599 ;---
1600 ;
1601 SPRSCRPOS   lda V1+1
1602             sta IC
1603             lda #0
1604             sta IZPA+1
1605             txa
1606             asl
1607             tay
1608             lda SCRBITS
1609             eor #7
1610             clc
1611             adc V1+3,Y
1612             sta IA
1613             bcc SSCRPOSB
1614             lda IC
1615             ora ZWEIERPOT,X
1616             sta IC
1617 SSCRPOSB    lda SCRBITZ
1618             eor #7
1619             clc
1620             adc V1+4,Y
1621             sta IB
1622             sec
1623             sbc #50
1624             bcs SSCRPOSA
1625             lda #0
1626 SSCRPOSA    and #%11111000
1627             sta IZPA
1628             asl
1629             rol IZPA+1
1630             asl
1631             rol IZPA+1
1632             clc
1633             adc IZPA
1634             sta IZPA
1635             lda IZPA+1
1636             adc MOMVRAM
1637             sta IZPA+1
1638 ;
1639             lda IC
1640             and ZWEIERPOT,X
1641             bne SSCRPOSC
1642             sec
1643             lda IA
1644             sbc #27
1645             bcc SSCRPOSX
1646             lsr
1647             lsr
1648             lsr
1649             jmp SSCRPOSD
1650 SSCRPOSC    lda IA
1651             clc
1652             adc #4
1653             lsr
1654             lsr
1655             lsr
1656             clc
1657             adc #28
1658 SSCRPOSD    clc
1659             adc IZPA
1660             sta IZPA
1661             bcc SSCRPOSX
1662             inc IZPA+1
1663 SSCRPOSX    dex
1664 ;
1665 ;---
1666 ;
1667 SPRMAPPOS   sty IZPA
1668             ldy #0
1669             sty IZPA+1
1670             ldy #6
1671 SMAPPOSA    asl
1672             rol IZPA+1
1673             dey
1674             bne SMAPPOSA
1675             clc
1676             adc IZPA
1677             sta IZPA
1678             lda IZPA+1
1679             adc #MAPRAM>
1680             sta IZPA+1
1681 SMAPPOSX    dex
1682 ;
1683 ;---
1684 ;
1685 FIXPERS     lda ENEMYFLG
1686             beq FIXPERSX
1687             lda CHARMFLG
1688             bne FIXPERSX
1689             lda #0
1690             sta FIXPERS0+1
1691             sta ENEMYFLG
1692             jsr FIXPERSIN
1693             inc ENEMYFLG
1694 FIXPERSX    dex
1695 ;
1696 FIXPERSIN   lda #4
1697             sta MOMJOB
1698             sta MOMSPRITE
1699             jsr SPRORIGIN
1700             lda PLRDIR
1701             asl
1702             tay
1703             lda FIXPERDAT,Y
1704             sta FIXPERJMP+1
1705             lda FIXPERDAT+1,Y
1706             sta FIXPERJMP+2
1707 FIXPERJMP   jmp $FFFF
1708 ;
1709 FIXPERDAT   dat FIXPERS0,FIXPERS1,FIXPERS2,FIXPERS3
1710 ;
1711 ;
1712 FIXPERS0    lda #0
1713             dat $2C
1714 ;
1715 FIXPERS1    lda #10
1716             sta SPRZEILE
1717             asl
1718             clc
1719             adc MOMYPOS
1720             bmi FIXPERS1X
1721             sta MOMYPOS
1722             lda MOMXPOS
1723             clc
1724             adc #44
1725             sta F
1726             lda #255
1727             sta SPRSPALTE
1728 ;
1729             ldy #15
1730 FIXPERS1A   lda FIXPYPOS,Y
1731             bmi FIXPERS1C
1732             cmp MOMYPOS
1733             bne FIXPERS1C
1734             lda FIXPXPOS,Y
1735             bit MOMXPOS
1736             bmi FIXPERS1B
1737             cmp MOMXPOS
1738             bcc FIXPERS1C
1739             bit F
1740             bmi FIXPERS1D
1741 FIXPERS1B   cmp F
1742             bcs FIXPERS1C
1743 FIXPERS1D   tya
1744             pha
1745             jsr FIXPERS4
1746             pla
1747             tay
1748 FIXPERS1C   dey
1749             bpl FIXPERS1A
1750 FIXPERS1X   dex
1751 ;
1752 ;
1753 FIXPERS2    lda #0
1754             dat $2C
1755 ;
1756 FIXPERS3    lda #21
1757             sta SPRSPALTE
1758             asl
1759             clc
1760             adc MOMXPOS
1761             bmi FIXPERS3X
1762             sta MOMXPOS
1763             lda MOMYPOS
1764             clc
1765             adc #22
1766             sta F
1767             lda #255
1768             sta SPRZEILE
1769 ;
1770             ldy #15
1771 FIXPERS3A   lda FIXPXPOS,Y
1772             bmi FIXPERS3C
1773             cmp MOMXPOS
1774             bne FIXPERS3C
1775             lda FIXPYPOS,Y
1776             bit MOMYPOS
1777             bmi FIXPERS3B
1778             cmp MOMYPOS
1779             bcc FIXPERS3C
1780             bit F
1781             bmi FIXPERS3D
1782 FIXPERS3B   cmp F
1783             bcs FIXPERS3C
1784 FIXPERS3D   tya
1785             pha
1786             jsr FIXPERS4
1787             pla
1788             tay
1789 FIXPERS3C   dey
1790             bpl FIXPERS3A
1791 FIXPERS3X   dex
1792 ;
1793 ;
1794 ;
1795 FIXPERS4    ldx #4
1796             tya
1797 FIXPERS4A   cmp SMFIXPERS,X
1798             beq FIXPERS4X
1799             inx
1800             cpx #8
1801             bcc FIXPERS4A
1802 ;
1803 FIXPERS4B   ldx MOMSPRITE
1804             cpx #8
1805             bcs FIXPERS4X
1806             lda SMTYP,X
1807             bmi FIXPERS4C
1808             inc MOMSPRITE
1809             bne FIXPERS4B
1810 ;
1811 FIXPERS4C   lda MOMXPOS
1812             pha
1813             lda MOMYPOS
1814             pha
1815             lda SPRSPALTE
1816             pha
1817             lda SPRZEILE
1818             pha
1819             tya
1820             sta SMFIXPERS,X
1821             lda FIXPMART,Y
1822             sta MOMMART
1823 ;
1824             lda SPRSPALTE
1825             bpl FIXPERS4D
1826             lda FIXPXPOS,Y
1827             sec
1828             sbc MOMXPOS
1829             lsr
1830             sta SPRSPALTE
1831 FIXPERS4D   lda FIXPXPOS,Y
1832             lsr
1833             sta MOMXPOS
1834 ;
1835             lda SPRZEILE
1836             bpl FIXPERS4E
1837             lda FIXPYPOS,Y
1838             sec
1839             sbc MOMYPOS
1840             lsr
1841             sta SPRZEILE
1842 FIXPERS4E   lda FIXPYPOS,Y
1843             lsr
1844             sta MOMYPOS
1845 ;
1846             lda FIXPTYP,Y
1847             and #31
1848             sta MOMTYP
1849             jsr SETEPOSIN
1850             jsr SETENEMYF
1851             lda #0
1852             sta SMSTPCTR,X
1853             pla
1854             sta SPRZEILE
1855             pla
1856             sta SPRSPALTE
1857             pla
1858             sta MOMYPOS
1859             pla
1860             sta MOMXPOS
1861 FIXPERS4X   dex
1862 ;
1863 ;---
1864 ;
1865 DISPLAY     jsr ICONCHK
1866             jsr LEVELCHK
1867             jsr SETHTP
1868             jsr ABALKEN
1869             dex
1870 ;
1871 ;---
1872 ;
1873 LEVELCHK    lda EXPCTR+1
1874             lsr
1875             lsr
1876             cmp #10
1877             bcc LEVELCHKB
1878             lda #9
1879 LEVELCHKB   sta LEVEL
1880             dex
1881 ;
1882 ;---
1883 ;
1884 SETHTP      lda MOMHLH
1885             lsr
1886             sta A
1887             lda MOMSTR
1888             lsr
1889             clc
1890             adc A
1891             sta MAXHTP
1892             cmp MOMHTP
1893             bcs SETHTPX
1894             sta MOMHTP
1895             lda #HTP
1896             ora BALKENFLG
1897             sta BALKENFLG
1898 SETHTPX     dex
1899 ;
1900 ;---
1901 ;
1902 ASLEEP      lda WATCHDOG
1903             beq ASLEEPF
1904             lda #4
1905             dat $2C
1906 ASLEEPF     lda #40
1907             pha
1908             lda #245
1909             sta SLEEPCTR
1910             lda #0
1911             jsr ASLEEPPR
1912             pla
1913             pha
1914             cmp #40
1915             beq ASLEEPG
1916             lda #2
1917             jsr ASLEEPPR
1918 ASLEEPG     lda SHAPE
1919             cmp #1
1920             beq ASLEEPC
1921             cmp #2
1922             bne ASLEEPD
1923             lda #0
1924             sta SHADEFL
1925             sec
1926             jsr LSTEEDIN
1927 ASLEEPD     lda #SLEEPSHP1
1928             dat $2C
1929 ASLEEPC     lda #SLEEPSHP2
1930             sta V1+27
1931             lda #6
1932             sta NMENUANZ
1933 ;
1934 ASLEEPE     pla
1935             sta FOUNDVAR
1936             pha
1937 ASLEEPA     lda #1
1938             jsr LTIMER
1939             jsr JOYSTICK
1940             dec FOUNDVAR
1941             bne ASLEEPA
1942             inc STUNDE
1943             ldy #1
1944             ldx #0
1945             jsr CLOCKEXE
1946             dec NMENUANZ
1947             bne ASLEEPE
1948             pla
1949             lda #24
1950             ldx ENDURANCE
1951             beq ASLEEPB
1952             asl
1953 ASLEEPB     sta SLEEPCTR
1954             lda HUNGERCTR
1955             bmi ASLEEPH
1956             lda SICKPTR
1957             bne ASLEEPH
1958             lda #3
1959             clc
1960             jsr CALCHTP
1961 ASLEEPH     lda #4
1962             clc
1963             adc SHAPENR
1964             sta V1+27
1965             lda #1
1966 ;
1967 ASLEEPPR    ldx SLEEPTXT
1968             ldy SLEEPTXT+1
1969             jmp GUPSTRING
1970 ;
1971 ;---
1972 ;
1973 ICONCHK     ldx #0
1974             jsr ICONOFF
1975             lda MAPFLG
1976             bne ICONCHKA
1977             jsr ICONON
1978 ;
1979 ICONCHKA    ldx #5
1980             jsr ICONOFF
1981             lda INCENSE
1982             beq ICONCHKB
1983             jsr ICONON
1984 ;
1985 ICONCHKB    ldx #7
1986             jsr ICONOFF
1987             lda ARTEFAKTS+1
1988             lsr
1989             bcc ICONCHKC
1990             jsr ICONON
1991 ;
1992 ICONCHKC    ldx #9
1993             jsr ICONOFF
1994             lda SHAPE
1995             bne ICONCHKD
1996             lda SWIM
1997             beq ICONCHKD
1998             lda MOMSTR
1999             beq ICONCHKD
2000             jsr ICONON
2001 ;
2002 ICONCHKD    ldx #10
2003             jsr ICONOFF
2004             lda ARTEFAKTS
2005             bpl ICONCHKE
2006             lda MAPFLG
2007             bne ICONCHKE
2008             jsr ICONON
2009 ;
2010 ICONCHKE    ldx #12
2011             jsr ICONON
2012             lda INFRA
2013             bne ICONCHKF
2014             jsr ICONOFF
2015 ;
2016 ICONCHKF    ldx #14
2017             jsr ICONON
2018             lda UHR
2019             bne ICONCHKG
2020             jsr ICONOFF
2021 ;
2022 ICONCHKG    ldx #15
2023             jsr ICONOFF
2024             lda ARTEFAKTS
2025             and #%00001111
2026             beq ICONCHKH
2027             jsr ICONON
2028 ;
2029 ICONCHKH    ldx #18
2030             jsr ICONOFF
2031             lda HIDE
2032             beq ICONCHKI
2033             lda SHAPE
2034             bne ICONCHKI
2035             lda ATTACKFLG
2036             bne ICONCHKI
2037             jsr ICONON
2038 ;
2039 ICONCHKI    ldx #2
2040             jsr ICONON
2041             ldx #13
2042             jsr ICONON
2043             lda MAPFLG
2044             bne ICONCHKJ
2045             jsr ICONOFF
2046             ldx #2
2047             jsr ICONOFF
2048 ;
2049 ICONCHKJ    ldx #19
2050             jsr ICONOFF
2051             lda KEY
2052             beq ICONCHKK
2053             lda MAPFLG
2054             beq ICONCHKK
2055             jsr ICONON
2056 ;
2057 ICONCHKK    ldx #8
2058             jsr ICONOFF
2059             lda MSENSEI
2060             beq ICONCHKX
2061             jsr ICONON
2062 ICONCHKX    dex
2063 ;
2064 ;
2065 ICONOFF     lda ICONDAT,X
2066             ora #128
2067             sta ICONDAT,X
2068             dex
2069 ICONON      lda ICONDAT,X
2070             and #15
2071             sta ICONDAT,X
2072             dex
2073 ;
2074 ;---
2075 ;
2076 ABALKEN     lda BALKENFLG
2077             beq ABALKENX
2078             ldy #0
2079 ABALKENA    lsr BALKENFLG
2080             bcc ABALKENB
2081             jsr SETBALKEN
2082 ABALKENB    iny
2083             lda MSENSEI
2084             bne ABALKENC
2085             cpy #4
2086             bcc ABALKENA
2087             bcs ABALKENX
2088 ABALKENC    cpy #5
2089             bcc ABALKENA
2090 ABALKENX    lda #0
2091             sta BALKENFLG
2092             dex
2093 ;
2094 ;---
2095 ;
2096 SETBALKEN   lda MOMABIL,Y
2097             cmp #48
2098             bcc SETBALKE
2099             lda #48
2100             sta MOMABIL,Y
2101 SETBALKE    sta A
2102             lda #2
2103             sta B
2104             lda SETBALKDT,Y
2105             tay
2106             lda #VRAM3+800<
2107             ldx #VRAM3+800>
2108             sta ZPA
2109             stx ZPA+1
2110             ldx #CRAM+800>
2111             sta ZPB
2112             stx ZPB+1
2113             ldx #6
2114 SETBALKA    lda A
2115             cmp #8
2116             bcc SETBALKB
2117             sbc #8
2118             sta A
2119             lda #BALKENCHR+8
2120             sta (ZPA),Y
2121             bne SETBALKC
2122 ;
2123 SETBALKB    adc #BALKENCHR
2124             sta (ZPA),Y
2125             lda #0
2126             sta A
2127 SETBALKC    lda B
2128             sta (ZPB),Y
2129             lda #5
2130             sta B
2131             sec
2132             lda ZPA
2133             sbc #40
2134             sta ZPA
2135             sta ZPB
2136             bcs SETBALKD
2137             dec ZPA+1
2138             dec ZPB+1
2139 SETBALKD    rts
2140             bpl SETBALKA
2141             dex
2142 ;
2143 SETBALKDT   dat 0,1,2,3,5
2144 ;
2145 ;---
2146 ;
2147 CALCSTR     ldx #0
2148             dat $2C
2149 ;
2150 CALCAGI     ldx #1
2151             dat $2C
2152 ;
2153 CALCHLH     ldx #2
2154             dat $2C
2155 ;
2156 CALCHTP     ldx #3
2157             dat $2C
2158 ;
2159 CALCWIT     ldx #4
2160 ;
2161 ;
2162 CALCABI     sta A
2163             bcc CALCAPL
2164             cpx #3
2165             bne CALCAMI
2166             lda #1
2167             ora HITIRQFLG
2168             sta HITIRQFLG
2169 CALCAMI     lda MOMABIL,X
2170             sbc A
2171             bcs CALCAMIB
2172             cpx #3
2173             bne CALCAMIA
2174             lda #3
2175             jmp GAMEEND
2176 CALCAMIA    lda #0
2177             sta MOMABIL,X
2178             sec
2179             bcs CALCABIX
2180 CALCAMIB    sta MOMABIL,X
2181             clc
2182             bcc CALCABIX
2183 ;
2184 CALCAPL     adc MOMABIL,X
2185             cmp #48
2186             bcc CALCAPLA
2187             lda #48
2188 CALCAPLA    cmp MAXABIL,X
2189             bcc CALCAPLB
2190             lda MAXABIL,X
2191 CALCAPLB    sta MOMABIL,X
2192 ;
2193 CALCABIX    php
2194             lda ZWEIERPOT,X
2195             ora BALKENFLG
2196             sta BALKENFLG
2197             jsr SETHTP
2198             plp
2199             dex
2200 ;
2201 ;--- DAM 2BYTE
2202 ;
2203 CALCDAM     lda #0
2204             asl A
2205             rol
2206             sta B
2207             lda MOMHTPCTR
2208             sec
2209             sbc A
2210             sta MOMHTPCTR
2211             lda MOMHTP
2212             sbc B
2213             sta MOMHTP
2214             bcs CALCDAMA
2215             lda #2
2216             jmp GAMEEND
2217 ;
2218 CALCDAMA    lda #HTP
2219             ora BALKENFLG
2220             sta BALKENFLG
2221 CALCDAMX    dex
2222 ;
2223 ; ---
2224 ;
2225 KOLLISION   lda SPRKOLFLG
2226             beq KOLLIS1X
2227             lda SPRKOLVAR
2228             sta A
2229             ldx MAPFLG
2230             bne KOLLIS2
2231 ;
2232 ;---
2233 ;
2234 KOLLIS1     ldx #7
2235 KOLLIS1A    stx AKTSPRITE
2236             lda SMTYP,X
2237             bmi KOLLIS1B
2238             jsr KOLL1EXE
2239 KOLLIS1B    rts
2240             cpx #5
2241             bcs KOLLIS1A
2242 KOLLIS1X    dex
2243 ;
2244 ;---
2245 ;
2246 KOLLIS2     ldx #7
2247             ror
2248             ror
2249             sta B
2250 KOLLIS2A    lda SMTYP,X
2251             bit B
2252             bpl KOLLIS2B
2253             asl A
2254             bcc KOLLIS2B
2255             ora #%00100000
2256             dat $2C
2257 KOLLIS2B    and #%11011111
2258             sta SMTYP,X
2259             rts
2260             bne KOLLIS2A
2261 KOLLIS2X    dex
2262 ;
2263 ;---
2264 ;
2265 KOLL1EXE    lda SMFIXPERS,X
2266             and #64
2267             bne KOLL1EXEX
2268             lda #0
2269             jsr SPRBITPOS
2270             stx SATTPOSX
2271             sty SATTPOSY
2272             ldx AKTSPRITE
2273             lda SATTPOSY
2274             bne KOLL1EXEX
2275             lda SATTPOSX
2276             bne KOLL1EXEX
2277             rts
2278             rts
2279             rts
2280             rts
2281             ldy #0
2282             jsr GETHIT
2283             ldx AKTSPRITE
2284             lda SMFIXPERS,X
2285             ora #64
2286             sta SMFIXPERS,X
2287             lda SMCOL,X
2288             bpl KOLL1EXEX
2289             jsr FBALLCHK
2290             jsr SPRITEOFF
2291 KOLL1EXEX   dex
2292 ;
2293 ; ---
2294 ;
2295 INIT        lda #0
2296             sta V+32
2297             sta V+33
2298             sta V+23
2299             sta V+29
2300             sta V+27
2301 ;
2302             lda #10
2303             sta MCA
2304             lda #0
2305             sta MCB
2306 ;
2307             ldx #$1C
2308 SIDINIT     sta SID,X
2309             rts
2310             bpl SIDINIT
2311             lda #$11
2312             sta SID+19
2313             sta SID+20
2314             lda #$81
2315             sta SID+18
2316 ;
2317             lda #$C2
2318             sta ZPA+1
2319             lda #$02
2320             sta ZPB+1
2321             lda #0
2322             sta ZPA
2323             sta ZPB
2324             ldx #6
2325             jsr PCOPY
2326 ;
2327             lda #$94
2328             sta ZPA+1
2329             lda #$D8
2330             sta ZPB+1
2331             lda #0
2332             sta ZPA
2333             sta ZPB
2334             ldx #4
2335             jsr PCOPY
2336 ;
2337 ;
2338             lda #0
2339             ldy #VRAM2>
2340             sta ZPA
2341             sty ZPA+1
2342             ldx #4
2343             jsr PFILL
2344 ;
2345             lda #0
2346             ldx #TEXTRAM>
2347             ldy #VRAM1>
2348             sta ZPA
2349             sta ZPB
2350             stx ZPA+1
2351             sty ZPB+1
2352             ldx #4
2353             jsr PCOPY
2354 ;
2355             cli
2356             dex
2357 ;
2358 ; ---
2359 ;
2360 MAINSET     sei
2361 ;
2362             lda $02A6
2363             sta COUNTRY
2364             lda #VRAM1>
2365             sta MOMVRAM
2366             lda #VRAM2>
2367             sta NEXTVRAM
2368             lda #0
2369             sta CHEATCTR
2370             sta ZSDELFLG
2371             sta LDPTR
2372             sta LDBYTECTR
2373             sta ICONFLG
2374             sta ZSANIFLG
2375             sta NPFLG
2376             sta NPCTR
2377             sta MAPFLG
2378             sta MINUTE
2379             sta TAG
2380             sta MONAT
2381             sta LIGHTFLG
2382             sta JAHR
2383             sta ENEMYFLG
2384             sta MONSCRFLG
2385             sta SHOPFLG
2386             sta SHADEFL
2387             sta INFRAFLG
2388             sta CHARMFLG
2389             sta FEARFLG
2390             sta MIRRORFLG
2391             sta HITIRQFLG
2392             sta MEQUIPFLG
2393             sta CNTRLFLG
2394             sta PLRHITCTR
2395             sta HIDEFLG
2396             sta CMPMOVFLG
2397             sta ZSMCFLG
2398             sta ENDFLG
2399             lda #1
2400             sta PLKOLLFL
2401             sta MICON
2402             sta SPRKOLFLG
2403             sta BALKENFLG
2404             sta SLOWSPEED
2405             sta SLOWCTR
2406             lda #3
2407             sta FICON
2408             sta SETJOBSPD
2409             sta SETSPRPTR
2410             lda #7
2411             sta SCRBITZ
2412             sta SCRBITS
2413             sta SCROLLFL
2414             sta MAPMOVDIR
2415             sta OLDSTR
2416             lda #255
2417             sta SHADECHR
2418             sta LDDIR
2419             sta LDDIR+7
2420             sta FIXENEMY
2421             sta SPRSCRFLG
2422             sta SNDTYP
2423             sta SNDTYP+1
2424             sta LSNDTYP
2425             sta LSNDTYP+1
2426             sta SOGFLG
2427             sta SOGCTR
2428             sta FREECHR
2429             sta CURSETYP
2430             sta BALKENFLG
2431             lda #18
2432             sta ATTACKSPA
2433             lda #6
2434             sta ATTACKZEI
2435             ldx #9
2436             lda #0
2437 SCLP        sta SPELLCTR,X
2438             rts
2439             bpl SCLP
2440             dex
2441 ;
2442 ;---
2443 ;
2444 SETMAPCTR   sta A
2445             stx XREG
2446             lda ATTACKFLG
2447             bne SMAPCTRIN
2448 ;
2449             ldx #0
2450             lda A
2451             lsr
2452             bcs SMAPCTRA
2453             inx
2454 SMAPCTRA    lda A
2455             bmi SMAPCTRB
2456 ;
2457             inc MAPCX32,X
2458             inc MAPCX128,X
2459             jmp SMAPCTRC
2460 ;
2461 SMAPCTRB    dec MAPCX32,X
2462             dec MAPCX128,X
2463 ;
2464 SMAPCTRC    lda MAPFLG
2465             bne SMAPCTRX
2466 ;
2467             lda MAPCX128
2468             and #127
2469             sta MAPCX128
2470             lda MAPCY128
2471             and #127
2472             sta MAPCY128
2473             jmp SMAPCTRX
2474 ;
2475 SMAPCTRIN   lda PLRDIR
2476             tax
2477             lsr
2478             tay
2479             lda ATTACKZEI,Y
2480             clc
2481             adc SMAPCDAT,X
2482             sta ATTACKZEI,Y
2483 ;
2484 SMAPCTRX    ldx XREG
2485             dex
2486 ;
2487 SMAPCDAT    dat 255,1,255,1
2488 ;
2489 ;--- AUF STEED
2490 ;
2491 ENTERSTED   lda SHAPE
2492             bne ESTEEDX
2493             lda STEEDSTAT
2494             bne ESTEEDPR
2495             lda ATTACKFLG
2496             beq ESTEEDA
2497             jmp ICONMAIN
2498 ESTEEDA     lda #2
2499             sta SHAPE
2500             jsr PLRONSCR
2501             lda #LAND
2502             jsr CHRONMAP
2503             lda #0
2504             jsr ESTEEDPR
2505 ESTEEDC     jsr WAITSTICK
2506             clc
2507             beq LSTEEDIN
2508             stx PLRDIR
2509             lda #255
2510             sta SHADEFL
2511             sta PLNEPOS
2512 ESTEEDX     dex
2513 ;
2514 ESTEEDPR    ldx ESTEEDTXT
2515             ldy ESTEEDTXT+1
2516             jmp GUPSTRING
2517 ;
2518 ;
2519 LEAVESTED   lda #2
2520             jsr ESTEEDPR
2521             ldx #0
2522             stx SHADEFL
2523             jsr STEEDEXE
2524 LSTEEDIN    php
2525             lda #STEEDCHR
2526             jsr CHRONMAP
2527             ldx #0
2528             stx SHAPE
2529             rts
2530             stx PLRDIR
2531             jsr PLRONSCR
2532             jsr MAPPOS
2533             jsr POSTOBLCK
2534             ldx #3
2535 LSTEEDB     lda A,X
2536             sta PLNEPOS,X
2537             rts
2538             bpl LSTEEDB
2539             plp
2540             bcc LSTEEDA
2541             lda #1
2542             sta STEEDSTAT
2543             jmp ESTEEDPR
2544 LSTEEDA     lda #5
2545             jsr LTIMER
2546             dex
2547 ;
2548 ;--- AUF SCHIFF
2549 ;
2550 ENTERSHIP   lda SHAPE
2551             bne ESHIPX
2552             inc SHAPE
2553             jsr SETFILCHR
2554             jsr CHRONMAP
2555             jsr PLRONSCR
2556             lda #7
2557             jsr NORMTEXT
2558             jsr MYSHIPCHK
2559             sta OWNSHIP
2560             bne ESHIPA
2561             ldx SHPDAM
2562             ldy SHPDAMCTR
2563             stx SHPSTATPF
2564             sty SHPSTATPF+1
2565             ldx #0
2566             ldy #10
2567             stx SHPDAM
2568             sty SHPDAMCTR
2569 ESHIPA      ldx ESHIPTXT
2570             ldy ESHIPTXT+1
2571             jsr GUPSTRING
2572 ESHIPX      dex
2573 ;
2574 ;
2575 LEAVESHIP   jsr RIGHTPOS
2576             bcs LSHIPX
2577             lda MAPFLG
2578             beq LSHIPA
2579             lda #CSHIPCHR
2580             dat $2C
2581 LSHIPA      lda #MSHIPCHR
2582 LSHIPIN     pha
2583             jsr CHRONMAP
2584             lda CFILLSWIT
2585             sta CFILLCHR
2586             lda #0
2587             sta SHAPE
2588             jsr PLRONSCR
2589             pla
2590             cmp #WASSER+64
2591             beq LSHIPXX
2592             lda OWNSHIP
2593             bne LSHIPD
2594             ldx SHPSTATPF
2595             ldy SHPSTATPF+1
2596             stx SHPDAM
2597             sty SHPDAMCTR
2598             jmp LSHIPC
2599 LSHIPD      jsr MYSHIPSET
2600 LSHIPC      lda #0
2601             sta OWNSHIP
2602             dat $2C
2603 LSHIPX      lda #1
2604             ldx LSHIPTXT
2605             ldy LSHIPTXT+1
2606             jsr GUPSTRING
2607 LSHIPXX     dex
2608 ;
2609 ;
2610 STEEDEXE    ldy #96
2611             ldx PLRDIR
2612             inx
2613 STEEDEXEA   txa
2614             pha
2615             tya
2616             pha
2617             jsr PLAYERB
2618             pla
2619             tay
2620             pla
2621             tax
2622             lda PLRRAM1
2623             cmp PLRRAM2
2624             bne STEEDEXEX
2625             and #63
2626             cmp #LAND
2627             bne STEEDEXEX
2628             dey
2629             bne STEEDEXEA
2630             clc
2631             dex
2632 STEEDEXEX   sec
2633             dex
2634 ;
2635 ;
2636 ;
2637 MYSHIPCHK   jsr MAPPOS
2638             lda MAPFLG
2639             bne MYSHPCITY
2640             jsr POSTOBLCK
2641             ldx #3
2642 MYSHPMAPA   lda SHIPPOS,X
2643             cmp A,X
2644             bne MYSHPCHKX
2645             rts
2646             bpl MYSHPMAPA
2647 MYSHPCHKY   lda #255
2648             sta SHIPPOS
2649             lda #1
2650             dex
2651 MYSHPCHKX   lda #0
2652             dex
2653 ;
2654 MYSHPCITY   lda CITYNR
2655             cmp #38
2656             beq MYSHPCHKY
2657             lda PLRPOSX
2658             lsr
2659             cmp SHIPPOS
2660             bne MYSHPCHKX
2661             lda PLRPOSY
2662             lsr
2663             cmp SHIPPOS+1
2664             bne MYSHPCHKX
2665             lda CITYNR
2666             cmp SHIPPOS+2
2667             bne MYSHPCHKX
2668             lda SHIPPOS+3
2669             bpl MYSHPCHKX
2670             bmi MYSHPCHKY
2671 ;
2672 ;
2673 ;
2674 MYSHIPSET   jsr MAPPOS
2675             lda MAPFLG
2676             bne MYSHPSETB
2677             jsr POSTOBLCK
2678             ldx #3
2679 MYSHPSETA   lda A,X
2680             sta SHIPPOS,X
2681             rts
2682             bpl MYSHPSETA
2683             dex
2684 ;
2685 MYSHPSETB   lda PLRPOSX
2686             lsr
2687             sta SHIPPOS
2688             lda PLRPOSY
2689             lsr
2690             sta SHIPPOS+1
2691             lda CITYNR
2692             sta SHIPPOS+2
2693             lda #255
2694             sta SHIPPOS+3
2695             dex
2696 ;
2697 ;
2698 ;---
2699 ;
2700 TELFIELD    lda GATSYMBL
2701             bne TELFIELDA
2702             ldx TELFLDTXT
2703             ldy TELFLDTXT+1
2704             jmp GUPSTRING
2705 ;
2706 TELFIELDA   stx FOUNDVAR
2707             jsr LOADSTOP
2708             dec GATSYMBL
2709             lda #6
2710             jsr SETVOICE1
2711             lda #255
2712             sta INITFLG
2713             ldy #8
2714 TELFIELDD   ldx #7
2715 TELFIELDE   asl ZSRAM1+1944,X
2716             lsr ZSRAM1+1968,X
2717             rts
2718             bpl TELFIELDE
2719             lda #1
2720             jsr LTIMER
2721             dey
2722             bne TELFIELDD
2723             ldx FOUNDVAR
2724             lda TELFLDDAT,X
2725             tax
2726 TELFIELDC   jsr CITYLOAD
2727             bcs TELFIELDC
2728             lda #0
2729             sta INITFLG
2730             lda #12
2731             jsr SETVOICE1
2732             jmp TELFAGE
2733 ;
2734 TELFLDDAT   dat 34,19,0,33,25,18,29,14,31,11,36,32,21
2735 ;
2736 ;---
2737 ;
2738 MAGFIELD    lda CMFPOS+2
2739             asl
2740             asl
2741             tax
2742             ldy #0
2743 MAGFIELDA   lda GPOSRAM,X
2744             sta PLRPOSX,Y
2745             inx
2746             iny
2747             cpy #4
2748             bcc MAGFIELDA
2749             lda PLRPOSY
2750             sbc #1
2751             sta PLRPOSY
2752             bcs MAGFIELDC
2753             dec PLRPOSY+1
2754 MAGFIELDC   lda #12
2755             jsr SETVOICE1
2756             jsr ZSDEL
2757             jsr ESTOP
2758             lda #255
2759             sta INITFLG
2760 MAGFIELDB   jsr MAPLOAD
2761             bcs MAGFIELDB
2762             lda #0
2763             sta INITFLG
2764             jmp TELFAGE
2765 ;
2766 ;
2767 ;
2768 ENDLOAD     lda LIGHTFLG
2769             bne ENDLOADA
2770             jmp ICONMAIN
2771 ENDLOADA    jsr RESTLOAD
2772             lda RIDDLES
2773             and RIDDLES+1
2774             cmp #255
2775             bne ENDLOADX
2776             lda SHAPENR
2777             sta V1+27
2778 ENDLOADB    lda #3
2779             jsr DISKWAIT
2780             bcs ENDLOADB
2781             lda #2
2782             jsr ENDPR
2783             lda #200
2784             jsr EINLEIT
2785             lda #0
2786             jsr ENDPR
2787             jmp GAMEENDIN
2788 ;
2789 ENDLOADX    lda #3
2790             jmp ENDPR
2791 ;
2792 ;
2793 ;
2794 CITYLOAD    stx CITYNR
2795             cpx #40
2796             bcc CITYLOADF
2797             jmp ENDLOAD
2798 CITYLOADF   lda #0
2799             sta ENEMYFLG
2800             jsr RESTLOAD
2801             lda SHAPENR
2802             sta V1+27
2803             lda CITYNR
2804             cmp #20
2805             bcc CITYLOADA
2806             lda #6
2807             dat $2C
2808 CITYLOADA   lda #5
2809 ;
2810             jsr DISKWAIT
2811             bcc CITYLOADC
2812             lda #0
2813             jsr NPRINT
2814             inc ENEMYFLG
2815             ldx CITYNR
2816             sec
2817             dex
2818 ;
2819 CITYLOADC   jsr SETLDFLGS
2820             lda #1
2821             sta MAPFLG
2822             jsr ZSLOAD
2823             lda CURSES
2824             and #4
2825             beq CITYLOADB
2826             ldx #0
2827             lda #TEXTRAM+$06A0>
2828             jsr CURSELOAD
2829 CITYLOADB   lda CITYNR
2830             cmp #20
2831             bcc CITYLOADE
2832             sbc #20
2833 CITYLOADE   ldy #30
2834 CITYLDIN    jsr MULT8BIT
2835             tax
2836             jsr GETTUS
2837             stx NTRACK
2838             sty NSECTOR
2839             ldx #MAPRAM<
2840             ldy #MAPRAM>
2841             lda #16
2842             jsr NLOAD
2843             ldx #CDATRAM<
2844             ldy #CDATRAM>
2845             lda #2
2846             jsr NLOAD
2847             lda NTRACK
2848             pha
2849             lda NSECTOR
2850             pha
2851             jsr SETCSHIP
2852             lda CTYPSPD
2853             jsr MAPLOADR1
2854             lda SHAPE
2855             bne CITYLOADG
2856             lda CDIRSHAPE
2857             sta V1+27
2858 CITYLOADG   inc ENEMYFLG
2859             jsr SPRONSCR
2860             lda INITFLG
2861             bne CITYLOADD
2862             lda #7
2863             jsr NORMTEXT
2864             lda #4
2865             jsr MAINMENPR
2866             jsr PRSTRING
2867             ldx #CITYNAME<
2868             ldy #CITYNAME>
2869             jsr PRSTRING
2870             lda #1
2871             jsr NPRINT
2872             jsr NPRINT
2873 CITYLOADD   pla
2874             sta NSECTOR
2875             pla
2876             sta NTRACK
2877             ldx #TEXTRAM<
2878             ldy #TEXTRAM>
2879             lda #12
2880             jsr NLOAD
2881             clc
2882 CITYLOADX   dex
2883 ;
2884 ;---
2885 ;
2886 MAPLOAD     lda #4
2887             jsr DISKWAIT
2888             bcc MAPLOADB
2889             lda #0
2890             jsr NPRINT
2891             sec
2892             dex
2893 ;
2894 MAPLOADB    jsr SETLDFLGS
2895             jsr ZSLOAD
2896             lda CURSES
2897             and #4
2898             beq MAPLOADD
2899             lda #34
2900             ldy #9
2901             sta NTRACK
2902             sty NSECTOR
2903             ldx #ZSRAM2<
2904             ldy #ZSRAM2>
2905             lda #1
2906             jsr NLOAD
2907 MAPLOADD    lda #0
2908             sta MAPFLG
2909             sta STATUEFLG
2910             lda INITFLG
2911             bne MAPLOADA
2912             lda CITYNR
2913             asl
2914             asl
2915             tax
2916             ldy #0
2917 MAPLOADC    lda CPOSRAM,X
2918             sta PLRPOSX,Y
2919             inx
2920             iny
2921             cpy #4
2922             bne MAPLOADC
2923 ;
2924 MAPLOADA    jsr GETMAP
2925             lda #5
2926             jsr MAPLOADR1
2927             lda #4
2928             clc
2929             adc SHAPENR
2930             sta V1+27
2931             lda CURSETYP
2932             sta FIXENEMY
2933             inc ENEMYFLG
2934             lda INITFLG
2935             bne MAPLOADX
2936             lda #8
2937             jsr NORMTEXT
2938             ldx #REGNAME<
2939             ldy #REGNAME>
2940             jsr PRSTRING
2941 MAPLOADX    clc
2942             dex
2943 ;
2944 ;---
2945 ;
2946 EXITCHK     lda PLRX128
2947             ora PLRY128
2948             bpl EXITCHKX
2949             jsr MAPLOAD
2950             lda #255
2951 EXITCHKX    dex
2952 ;
2953 ;
2954 ;
2955 SETLDFLGS   lda #0
2956             sta ENEMYFLG
2957             sta CHARMFLG
2958             sta CNTRLFLG
2959             sta ATTACKFLG
2960             dex
2961 ;
2962 ;
2963 MAPLOADR1   pha
2964             jsr ESTOP
2965             jsr SETPLRSPR
2966             lda #0
2967             sta V1
2968             sta SCROLLFL
2969             jsr ZSDEL
2970             jsr ZSDATCOPY
2971             jsr WSPRLOAD
2972             jsr LIGHTCHK
2973             jsr GETPOSPTR
2974             jsr SETFILCHR
2975             jsr MAPONSCR
2976             lda CFIXTYP
2977             sta FIXENEMY
2978             jsr ZSFILL
2979             lda #1
2980             sta V1
2981             pla
2982             sta SETJOBSPD
2983             jmp ESTOP
2984 ;
2985 ;
2986 ZSLOAD      lda #35
2987             ldy #6
2988             sta NTRACK
2989             sty NSECTOR
2990             ldx #TEXTRAM<
2991             ldy #TEXTRAM>
2992             lda #10
2993             jmp NLOAD
2994 ;
2995 ;
2996 SETFILCHR   lda SHAPE
2997             beq STFILCHRX
2998             lda CFILLCHR
2999             sta CFILLSWIT
3000             lda #WASSER+64
3001             sta CFILLCHR
3002 STFILCHRX   dex
3003 ;
3004 ;
3005 WSPRLOAD    lda #34
3006             ldy #13
3007             sta NTRACK
3008             sty NSECTOR
3009             ldx #EDATRAM<
3010             ldy #EDATRAM>
3011             lda #2
3012             jsr NLOAD
3013             ldx #WSPRRAM<
3014             ldy #WSPRRAM>
3015             lda #8
3016             jsr NLOAD
3017 WSPRLOADX   dex
3018 ;
3019 ;---
3020 ;
3021 NCHARLOAD   lda #17
3022             dat $2C
3023 ;
3024 CHARLOAD    lda #18
3025 CHARLOADA   ldy #18
3026             sty NTRACK
3027             sta NSECTOR
3028             ldx #CHDT<
3029             ldy #CHDT>
3030             lda #1
3031             jsr NLOAD
3032             clc
3033 CHARLOADX   dex
3034 ;
3035 ;---
3036 ;
3037 CHARSAVE    lda #18
3038             sta NTRACK
3039             sta NSECTOR
3040             ldx #CHDT<
3041             ldy #CHDT>
3042             lda #1
3043             jmp NSAVE
3044 ;
3045 ;---
3046 ;
3047 SAVEGAME    lda ATTACKFLG
3048             bne SAVEGAMEF
3049             lda MAPFLG
3050             beq SAVEGAMEA
3051             lda CITYNR
3052             cmp #38 ; MOKUTEKI
3053             bne SAVEGAMEA
3054 SAVEGAMEF   lda #0
3055             jmp NORMTEXT
3056 ;
3057 SAVEGAMEA   jsr MAPPOS
3058             lda MAPFLG
3059             beq SAVEGAMEB
3060             clc
3061             jsr DOORSET
3062 SAVEGAMEB   sec
3063             jsr PCLOCKSET
3064             lda #3
3065             jsr DISKWAIT
3066             bcs SAVEGAMEX
3067 ;
3068             jsr CHARSAVE
3069             lda MAPFLG
3070             beq SAVEGAMEC
3071             lda CITYNR
3072             cmp #20
3073             bcc SAVEGAMED
3074             lda #6
3075             dat $2C
3076 SAVEGAMED   lda #5
3077             dat $2C
3078 SAVEGAMEC   lda #4
3079 SAVEGAMEE   jsr DISKWAIT
3080             bcs SAVEGAMEE
3081 SAVEGAMEX   jmp PTIMEXE
3082 ;
3083 ;
3084 ;
3085 PTIMEXE     sec
3086             jsr PCLOCKSET
3087             lda #0
3088             jsr PTIMEXEPR
3089             ldx PTIME+4
3090             ldy #0
3091             clc
3092             jsr BYTEASC
3093             lda #1
3094             jsr PTIMEXEPR
3095 ;
3096             lda PTIME+3
3097             cmp #146
3098             beq PTIMEXEA
3099             cmp #18
3100             bne PTIMEXEB
3101             lda #0
3102             dat $2C
3103 PTIMEXEA    lda #128
3104 PTIMEXEB    jsr BCDTODEZ
3105             ldy #0
3106             clc
3107             jsr BYTEASC
3108             lda #2
3109             jsr PTIMEXEPR
3110 ;
3111             lda PTIME+2
3112             and #127
3113             jsr BCDTODEZ
3114             ldy #0
3115             clc
3116             jsr BYTEASC
3117             lda #3
3118 ;
3119 PTIMEXEPR   ldx PTIMETXT
3120             ldy PTIMETXT+1
3121             jmp GUPSTRING
3122 ;
3123 BCDTODEZ    tay
3124             and #15
3125             sta A
3126             tya
3127             and #127
3128             lsr
3129             lsr
3130             lsr
3131             lsr
3132             tax
3133             lda BTDDAT,X
3134             clc
3135             adc A
3136             iny
3137             bpl BCDTODEZX
3138             adc #12
3139 BCDTODEZX   tax
3140             dex
3141 ;
3142 BTDDAT      dat 0,10,20,30,40,50
3143 ;
3144 ;---
3145 ;
3146 SPRONSCR    lda #0
3147             sta PLRDIR
3148             lda #10
3149             sta FIXPERS0+1
3150 SPRONSCRA   jsr FIXPERSIN
3151             dec FIXPERS0+1
3152             bpl SPRONSCRA
3153             lda #0
3154             sta FIXPERS0+1
3155             sta V1+2
3156             dex
3157 ;
3158 ;---
3159 ;
3160 ZSDATCOPY   lda LIGHTFLG
3161             beq ZSDATCPYF
3162             jsr LIGHTCEXE
3163 ZSDATCPYF   lda #0
3164             sta LIGHTFLG
3165             sta MINUTE
3166             lda MAPFLG
3167             beq ZSDATCPYC
3168             lda CLANDCHR
3169             bmi ZSDATCPYC
3170 ;
3171             and #63
3172             pha
3173             ldy #32
3174             jsr MULT8BIT
3175             sta ZPA
3176             tya
3177             clc
3178             adc #ZSRAM1>
3179             sta ZPA+1
3180             ldy #31
3181 ZSDATCPYA   lda (ZPA),Y
3182             sta TEXTRAM+2464,Y
3183             dey
3184             bpl ZSDATCPYA
3185             pla
3186             tax
3187             lda ZSKOLDAT,X
3188             sta TEXTRAM+429
3189             lda ZSCASTDAT,X
3190             sta TEXTRAM+493
3191             txa
3192             asl
3193             asl
3194             tay
3195             ldx #0
3196 ZSDATCPYB   lda ZS1FARBDT,Y
3197             sta TEXTRAM+244,X
3198             iny
3199             inx
3200             cpx #4
3201             bcc ZSDATCPYB
3202 ;
3203 ZSDATCPYC   ldx #0
3204 ZSDATCPYD   lda TEXTRAM,X
3205             sta ZS1FARBDT,X
3206             lda TEXTRAM+256,X
3207             sta ZSANIDAT,X
3208             inx
3209             bne ZSDATCPYD
3210             lda #TEXTRAM+512<
3211             ldy #TEXTRAM+512>
3212             sta ZPA
3213             sty ZPA+1
3214             lda #ZSRAM1<
3215             ldy #ZSRAM1>
3216             sta ZPB
3217             sty ZPB+1
3218             ldx #8
3219             jmp PCOPY
3220 ;
3221 ;---
3222 ;
3223 GETHIT      stx SCHLAEGER
3224             sty OPFER
3225             cpx #0
3226             bne GETWPNE
3227 ;
3228 GETWPNP     lda SMWEAPON
3229             and #31
3230             tay
3231             lda MOMSTR
3232             lsr
3233             lsr
3234             lsr
3235             lsr
3236             clc
3237             adc SHOTDAM,Y
3238             sta A ;DAMAGE
3239 ;
3240             lda MOMSTR
3241             bit SMWEAPON
3242             bpl GETWPNPB
3243             lda MOMDEX
3244 GETWPNPB    ldx #3
3245             cpy #16
3246             bcs GETWPNPA
3247             ldx MOMSKILL
3248 GETWPNPA    clc
3249             adc SHOTHIT,Y
3250             rts
3251             bpl GETWPNPA
3252             sta E
3253             lsr E
3254             bpl GETWPNEA
3255 ;
3256 ;
3257 GETWPNE     lda SMDAM,X
3258             sta A
3259             lda #0
3260             sta E
3261             lda SMHIT,X
3262 GETWPNEA    jsr GHRANDOM
3263             sta B
3264 ;
3265 ;
3266 ;
3267 GETHITA     ldy OPFER
3268             bne GETARME
3269 ;
3270 GETARMP     ldx MOMARMOR
3271             lda MOMDEX
3272             clc
3273             adc PARMOR,X
3274             sta E
3275             lsr E
3276             bpl GETARMEA
3277 ;
3278 GETARME     lda #0
3279             sta E
3280             lda SMAC,Y
3281 GETARMEA    jsr GHRANDOM
3282             sta C
3283 ;
3284 ;
3285 GETHITB     ldy OPFER
3286             bne GETHITBA
3287             lda SPELLCTR+3
3288             bne GETHITX
3289             lda RANDOM
3290             and #15
3291             beq GETHITNO
3292             cmp #15
3293             beq GETHITYES
3294 GETHITBA    lda C
3295             cmp B
3296             bcs WPNDAM
3297 ;
3298 ;
3299 GETHITYES   lda ZWEIERPOT,Y
3300             ora HITIRQFLG
3301             sta HITIRQFLG
3302             lda A
3303             jsr GETDAMAGE
3304 GETHITNO    jsr ARMDAM
3305 GETHITX     dex
3306 ;
3307 ;
3308 WPNDAM      lda SCHLAEGER
3309             bne WPNDAMX
3310             ldx SMWEAPON
3311             cpx #16
3312             bcs WPNDAMX
3313             lda #9
3314             jsr WPNDAMCLC
3315             bcc WPNDAMX
3316             lda #19
3317             sta MOMWEAPON
3318             jsr SETWPNSHP
3319 WPNDAMX     dex
3320 ;
3321 ;
3322 ARMDAM      lda OPFER
3323             bne WPNDAMX
3324             lda MOMARMOR
3325             cmp #8
3326             bcs WPNDAMX
3327             adc #16
3328             tax
3329             lda #10
3330             jsr WPNDAMCLC
3331             bcc WPNDAMX
3332             lda #8
3333             sta MOMARMOR
3334             jmp SETARMSHP
3335 ;
3336 ;
3337 WPNDAMCLC   ldy RANDOM
3338             cpy #255
3339             bcc WPNDAMX
3340             stx XREG
3341             jsr NORMTEXT
3342             ldx XREG
3343             inc DAMAGECTR,X
3344             lda DAMAGECTR,X
3345             pha
3346             clc
3347             adc #12
3348             jsr NORMTEXT
3349             ldx XREG
3350             pla
3351             cmp #3
3352             bcc WPNDAMX
3353             dec WAREN,X
3354 WPNDDAMX    dex
3355 ;
3356 PARMOR      dat 30,50,70,95,120,145,170,207,0
3357 ;
3358 ;
3359 GHRANDOM    sta F
3360             ldx #255
3361             stx D
3362             ldx #8
3363 GHRANDOMA   asl
3364             bcs GHRANDOMB
3365             lsr D
3366             rts
3367             bne GHRANDOMA
3368 GHRANDOMB   lda RANDOM
3369             and D
3370             cmp F
3371             bcc GHRANDOMC
3372             lda F
3373 GHRANDOMC   cmp E
3374             bcs GHRANDOMX
3375             lda E
3376 GHRANDOMX   dex
3377 ;
3378 ;---
3379 ;
3380 GETDAMAGE   cpy #0     ;A=DAM,Y=TYP
3381             bne GETDAMA
3382             jmp CALCDAM
3383 ;
3384 GETDAMA     lda RANDOM
3385             cmp #245
3386             bcs GETDAMB
3387             lda SMHPTS,Y
3388             sec
3389             sbc A
3390             sta SMHPTS,Y
3391             bcc GETDAMB
3392 GETDAMX     dex
3393 ;
3394 GETDAMB     lda RANDOM
3395             and #7
3396             sta A
3397             lda SMTYP,Y
3398             and #31
3399             tax
3400             lda EEXP,X
3401             clc
3402             adc PLREXPCTR
3403             sta PLREXPCTR
3404             lda RANDOM
3405             and #63
3406             adc PLRTRCTR
3407             sta PLRTRCTR
3408 ;
3409             tya
3410             tax
3411             clc
3412             adc #4
3413             tay
3414             jsr SPRITEOFF
3415             tya
3416             tax
3417             jmp SPRITEOFF
3418 ;
3419 ;---
3420 ;
3421 STEEDDIR    lda SHAPE
3422             cmp #2
3423             bne STEEDDIRX
3424             rts
3425             bmi STEEDDIRA
3426             txa
3427             inx
3428             cmp PLRDIR
3429             bne STEEDDIRX
3430 STEEDDIRA   ldx PLRDIR
3431             inx
3432 STEEDDIRX   dex
3433 ;
3434 ;---
3435 ;
3436 PLRONSCR    jsr SETWPNSHP
3437             jsr SETARMSHP
3438             jsr SPELLCOPY
3439             ldx SHAPE
3440             lda PONSCRDTA,X
3441             sta SHAPENR
3442             clc
3443             adc #4
3444             sta V1+27
3445             lda PONSCRDTB,X
3446             beq PLRONSCRA
3447             sta V1+19
3448             sta SMCOL
3449 PLRONSCRA   lda #%00011111
3450             sta BALKENFLG
3451             jmp DISPLAY
3452 ;
3453 PONSCRDTA   dat FMS,FSS,FHS
3454 PONSCRDTB   dat 0,SHIPCOL,STEEDCOL
3455 ;
3456 ;
3457 ;
3458 CHRONMAP    pha
3459             jsr RIGHTPOS
3460             jsr RAMPOS
3461             pla
3462             ldy #0
3463             sta (ZPA),Y
3464             jmp MAPONSCR
3465 ;
3466 ;---
3467 ;
3468 FBALLCHK    lda SMTYP,X
3469             and #31
3470             cmp #16
3471             beq FBALLCHKA
3472             clc
3473             dex
3474 FBALLCHKA   txa
3475             pha
3476             lda SMXPOS,X
3477             ldy SMYPOS,X
3478             tax
3479             jsr CTRTORAM
3480             lda #FEUERCHR
3481             sta (ZPA),Y
3482             lda #11
3483             jsr SETVOICE2
3484             lda SCROLLFL
3485             bpl FBALLCHKB
3486             jsr MAPONSCR
3487 FBALLCHKB   pla
3488             tax
3489             sec
3490             dex
3491 ;
3492 ;
3493 SHIPCHK     lda SHPDAMCTR
3494             bpl SHIPCHKX
3495             lda #10
3496             sta SHPDAMCTR
3497             inc SHPDAM
3498             lda SHPDAM
3499             and #127
3500             cmp #3
3501             bcc SHIPCHKA
3502 SHIPCHKB    lda #WASSER+64
3503             jsr LSHIPIN
3504             lda #255
3505             sta SHIPPOS
3506             lda #0
3507             sta SHPDAM
3508             lda #3
3509 ;
3510 SHIPCHKA    clc
3511             adc #12
3512             pha
3513             ldx SHPDAMTXT
3514             ldy SHPDAMTXT+1
3515             jsr PRSTRING
3516             pla
3517             jsr NORMTEXT
3518 SHIPCHKX    dex
3519 ;
3520 ;
3521 ;
3522 SETCSHIP    lda SHIPPOS+3
3523             bpl SETCSHIPX
3524             lda SHIPPOS+2
3525             cmp CITYNR
3526             bne SETCSHIPX
3527             ldx SHIPPOS
3528             ldy SHIPPOS+1
3529             jsr CTRTORAM
3530             lda #CSHIPCHR
3531             sta (ZPA),Y
3532 SETCSHIPX   dex
3533 ;
3534 SETSTATUE   lda STATUEFLG
3535             beq SETCSHIPX
3536             jmp STATUEEXE
3537 ;
3538 ;
3539 TELFAGE     lda RANDOM
3540             and #7
3541             clc
3542             adc AGE
3543             sta AGE
3544             cmp #80
3545             bcc TELFAGEX
3546             lda #1
3547             jmp GAMEEND
3548 TELFAGEX    dex
3549 ;
3550 ;
3551 CLRDISPL    lda #CRAM+UPOS<
3552             ldy #CRAM+UPOS>
3553             sta ZPA
3554             sty ZPA+1
3555             ldx #5
3556 CLRDISPLA   ldy #20
3557             lda #8
3558 CLRDISPLB   sta (ZPA),Y
3559             dey
3560             bpl CLRDISPLB
3561             lda ZPA
3562             clc
3563             adc #40
3564             sta ZPA
3565             bcc CLRDISPLC
3566             inc ZPA+1
3567 CLRDISPLC   rts
3568             bne CLRDISPLA
3569             dex
3570 ;
3571 ;
3572 GAMEEND     pha
3573             jsr ESTOP
3574             jsr LOADSTOP
3575             lda #255
3576             sta FREECHR
3577             lda #0
3578             sta SHAPE
3579             sta FREECTR
3580             ldx #7
3581 GAMEENDC    sta MOMABIL,X
3582             rts
3583             bpl GAMEENDC
3584             stx ICONFLG
3585             jsr PLRONSCR
3586             jsr SETPLRSPR
3587             jsr CLRDISPL
3588             lda #0
3589             sta V1
3590             jsr NPRINT
3591             lda #9
3592             jsr SETVOICE1
3593             pla
3594             bmi GAMEENDA
3595             pha
3596             ldx STATTXT
3597             ldy STATTXT+1
3598             jsr PRSTRING
3599             pla
3600             jsr GAMENDPR
3601             lda #0
3602             jsr GAMENDPR
3603             lda #1
3604             jsr NORMTEXT
3605 GAMEENDIN   lda CURSES
3606             and #4
3607             beq GAMEENDB
3608             lda #34
3609             ldy #8
3610             sta NTRACK
3611             sty NSECTOR
3612             ldx #ZSRAM2<
3613             ldy #ZSRAM2>
3614             lda #1
3615             jsr NLOAD
3616 GAMEENDB    jsr WAITSTICK
3617 ;
3618 GAMEENDA    lda #3
3619             jsr DISKWAIT
3620             bcs GAMEENDA
3621             jmp WARMSTART
3622 ;
3623 GAMENDPR    ldx GAMENDTXT
3624             ldy GAMENDTXT+1
3625             jmp GUPSTRING
3626 ;
3627 ;
3628 ;
3629 EINLEIT     pha
3630             jsr ESTOP
3631             lda #0
3632             sta V1
3633             sta ENDFLG
3634             ldy #WSPRRAM+2048>
3635             sta ZPA
3636             sty ZPA+1
3637             ldy #TEXTRAM+1024>
3638             sta ZPB
3639             sty ZPB+1
3640             ldx #8
3641             jsr PCOPY
3642             lda #255
3643             sta ZSANIFLG
3644             jsr ZSDEL
3645             lda #31
3646             ldy #14
3647             sta NTRACK
3648             sty NSECTOR
3649             ldx #ZSRAM1<
3650             ldy #ZSRAM1>
3651             lda #8
3652             jsr NLOAD
3653             ldx #MAPRAM<
3654             ldy #MAPRAM>
3655             lda #14
3656             jsr NLOAD
3657             ldx #WSPRRAM<
3658             ldy #WSPRRAM>
3659             lda #14
3660             jsr NLOAD
3661             ldx #TEXTRAM<
3662             ldy #TEXTRAM>
3663             lda #3
3664             jsr NLOAD
3665             pla
3666             jsr TEXTRAM
3667             lda #0
3668             ldy #TEXTRAM+1024>
3669             sta ZPA
3670             sty ZPA+1
3671             ldy #WSPRRAM+2048>
3672             sta ZPB
3673             sty ZPB+1
3674             ldx #8
3675             jsr PCOPY
3676             clc
3677             dex
3678 ;
3679 ;
3680 ENDPR       ldx ENDTXT
3681             ldy ENDTXT+1
3682             jmp GUPSTRING
